Merge branch 'master' into advanced-permissions-phase-1
Этот коммит содержится в:
@@ -109,7 +109,7 @@ func Init(a *app.App, root *mux.Router) *API {
|
||||
api.InitReaction()
|
||||
|
||||
// 404 on any api route before web.go has a chance to serve it
|
||||
root.Handle("/api/{anything:.*}", http.HandlerFunc(Handle404))
|
||||
root.Handle("/api/{anything:.*}", http.HandlerFunc(api.Handle404))
|
||||
|
||||
a.InitEmailBatching()
|
||||
|
||||
@@ -120,6 +120,10 @@ func Init(a *app.App, root *mux.Router) *API {
|
||||
return api
|
||||
}
|
||||
|
||||
func (api *API) Handle404(w http.ResponseWriter, r *http.Request) {
|
||||
Handle404(api.App, w, r)
|
||||
}
|
||||
|
||||
func ReturnStatusOK(w http.ResponseWriter) {
|
||||
m := make(map[string]string)
|
||||
m[model.STATUS] = model.STATUS_OK
|
||||
|
||||
@@ -119,9 +119,10 @@ func setupTestHelper(enterprise bool) *TestHelper {
|
||||
|
||||
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableOpenServer = true })
|
||||
|
||||
utils.SetIsLicensed(enterprise)
|
||||
if enterprise {
|
||||
utils.License().Features.SetDefaults()
|
||||
th.App.SetLicense(model.NewTestLicense())
|
||||
} else {
|
||||
th.App.SetLicense(nil)
|
||||
}
|
||||
|
||||
return th
|
||||
|
||||
@@ -229,7 +229,7 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
if c.Err.StatusCode == http.StatusUnauthorized {
|
||||
http.Redirect(w, r, c.GetTeamURL()+"/?redirect="+url.QueryEscape(r.URL.Path), http.StatusTemporaryRedirect)
|
||||
} else {
|
||||
utils.RenderWebError(c.Err, w, r)
|
||||
utils.RenderWebAppError(w, r, c.Err, c.App.AsymmetricSigningKey())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -434,7 +434,7 @@ func IsApiCall(r *http.Request) bool {
|
||||
return strings.Index(r.URL.Path, "/api/") == 0
|
||||
}
|
||||
|
||||
func Handle404(w http.ResponseWriter, r *http.Request) {
|
||||
func Handle404(a *app.App, w http.ResponseWriter, r *http.Request) {
|
||||
err := model.NewAppError("Handle404", "api.context.404.app_error", nil, "", http.StatusNotFound)
|
||||
|
||||
l4g.Debug("%v: code=404 ip=%v", r.URL.Path, utils.GetIpAddress(r))
|
||||
@@ -444,7 +444,7 @@ func Handle404(w http.ResponseWriter, r *http.Request) {
|
||||
err.DetailedError = "There doesn't appear to be an api call for the url='" + r.URL.Path + "'. Typo? are you missing a team_id or user_id as part of the url?"
|
||||
w.Write([]byte(err.ToJson()))
|
||||
} else {
|
||||
utils.RenderWebError(err, w, r)
|
||||
utils.RenderWebAppError(w, r, err, a.AsymmetricSigningKey())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -174,12 +174,12 @@ func getPublicFile(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
if hash != correctHash {
|
||||
c.Err = model.NewAppError("getPublicFile", "api.file.get_file.public_invalid.app_error", nil, "", http.StatusBadRequest)
|
||||
http.Redirect(w, r, c.GetSiteURLHeader()+"/error?message="+utils.T(c.Err.Message), http.StatusTemporaryRedirect)
|
||||
utils.RenderWebAppError(w, r, c.Err, c.App.AsymmetricSigningKey())
|
||||
return
|
||||
}
|
||||
} else {
|
||||
c.Err = model.NewAppError("getPublicFile", "api.file.get_file.public_invalid.app_error", nil, "", http.StatusBadRequest)
|
||||
http.Redirect(w, r, c.GetSiteURLHeader()+"/error?message="+utils.T(c.Err.Message), http.StatusTemporaryRedirect)
|
||||
utils.RenderWebAppError(w, r, c.Err, c.App.AsymmetricSigningKey())
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,6 @@ import (
|
||||
"net/http"
|
||||
|
||||
"github.com/mattermost/mattermost-server/model"
|
||||
"github.com/mattermost/mattermost-server/utils"
|
||||
)
|
||||
|
||||
func (api *API) InitLicense() {
|
||||
@@ -83,7 +82,7 @@ func removeLicense(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
func getClientLicenceConfig(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
useSanitizedLicense := !c.App.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM)
|
||||
|
||||
etag := utils.GetClientLicenseEtag(useSanitizedLicense)
|
||||
etag := c.App.GetClientLicenseEtag(useSanitizedLicense)
|
||||
if c.HandleEtag(etag, "Get Client License Config", w, r) {
|
||||
return
|
||||
}
|
||||
@@ -91,9 +90,9 @@ func getClientLicenceConfig(c *Context, w http.ResponseWriter, r *http.Request)
|
||||
var clientLicense map[string]string
|
||||
|
||||
if useSanitizedLicense {
|
||||
clientLicense = utils.ClientLicense()
|
||||
clientLicense = c.App.ClientLicense()
|
||||
} else {
|
||||
clientLicense = utils.GetSanitizedClientLicense()
|
||||
clientLicense = c.App.GetSanitizedClientLicense()
|
||||
}
|
||||
|
||||
w.Header().Set(model.HEADER_ETAG_SERVER, etag)
|
||||
|
||||
@@ -5,8 +5,6 @@ package api
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/mattermost/mattermost-server/utils"
|
||||
)
|
||||
|
||||
func TestGetLicenceConfig(t *testing.T) {
|
||||
@@ -32,7 +30,7 @@ func TestGetLicenceConfig(t *testing.T) {
|
||||
t.Fatal("cache should be empty")
|
||||
}
|
||||
|
||||
utils.SetClientLicense(map[string]string{"IsLicensed": "true"})
|
||||
th.App.SetClientLicense(map[string]string{"IsLicensed": "true"})
|
||||
|
||||
if cache_result, err := Client.GetClientLicenceConfig(result.Etag); err != nil {
|
||||
t.Fatal(err)
|
||||
@@ -40,7 +38,7 @@ func TestGetLicenceConfig(t *testing.T) {
|
||||
t.Fatal("result should not be empty")
|
||||
}
|
||||
|
||||
utils.SetClientLicense(map[string]string{"SomeFeature": "true", "IsLicensed": "true"})
|
||||
th.App.SetClientLicense(map[string]string{"SomeFeature": "true", "IsLicensed": "true"})
|
||||
|
||||
if cache_result, err := Client.GetClientLicenceConfig(result.Etag); err != nil {
|
||||
t.Fatal(err)
|
||||
@@ -48,6 +46,6 @@ func TestGetLicenceConfig(t *testing.T) {
|
||||
t.Fatal("result should not be empty")
|
||||
}
|
||||
|
||||
utils.SetClientLicense(map[string]string{"IsLicensed": "false"})
|
||||
th.App.SetClientLicense(map[string]string{"IsLicensed": "false"})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -160,18 +160,8 @@ func TestCreatePost(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
isLicensed := utils.IsLicensed()
|
||||
license := utils.License()
|
||||
disableTownSquareReadOnly := th.App.Config().TeamSettings.ExperimentalTownSquareIsReadOnly
|
||||
defer func() {
|
||||
th.App.UpdateConfig(func(cfg *model.Config) { cfg.TeamSettings.ExperimentalTownSquareIsReadOnly = disableTownSquareReadOnly })
|
||||
utils.SetIsLicensed(isLicensed)
|
||||
utils.SetLicense(license)
|
||||
}()
|
||||
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.ExperimentalTownSquareIsReadOnly = true })
|
||||
utils.SetIsLicensed(true)
|
||||
utils.SetLicense(&model.License{Features: &model.Features{}})
|
||||
utils.License().Features.SetDefaults()
|
||||
th.App.SetLicense(model.NewTestLicense())
|
||||
|
||||
defaultChannel := store.Must(th.App.Srv.Store.Channel().GetByName(team.Id, model.DEFAULT_CHANNEL, true)).(*model.Channel)
|
||||
defaultPost := &model.Post{
|
||||
@@ -400,6 +390,7 @@ func TestUpdatePost(t *testing.T) {
|
||||
defer func() {
|
||||
th.RestoreDefaultRolePermissions(defaultRolePermissions)
|
||||
}()
|
||||
th.App.SetLicense(model.NewTestLicense())
|
||||
|
||||
th.AddPermissionToRole(model.PERMISSION_EDIT_POST.Id, model.CHANNEL_USER_ROLE_ID)
|
||||
|
||||
@@ -470,17 +461,8 @@ func TestUpdatePost(t *testing.T) {
|
||||
}
|
||||
|
||||
// Test licensed policy controls for edit post
|
||||
isLicensed := utils.IsLicensed()
|
||||
license := utils.License()
|
||||
defer func() {
|
||||
utils.SetIsLicensed(isLicensed)
|
||||
utils.SetLicense(license)
|
||||
}()
|
||||
utils.SetIsLicensed(true)
|
||||
utils.SetLicense(&model.License{Features: &model.Features{}})
|
||||
utils.License().Features.SetDefaults()
|
||||
|
||||
th.RemovePermissionFromRole(model.PERMISSION_EDIT_POST.Id, model.CHANNEL_USER_ROLE_ID)
|
||||
|
||||
post4 := &model.Post{ChannelId: channel1.Id, Message: "zz" + model.NewId() + "a", RootId: rpost1.Data.(*model.Post).Id}
|
||||
rpost4, err := Client.CreatePost(post4)
|
||||
if err != nil {
|
||||
|
||||
@@ -299,9 +299,9 @@ func getInitialLoad(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
il.ClientCfg = c.App.ClientConfig()
|
||||
if c.App.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) {
|
||||
il.LicenseCfg = utils.ClientLicense()
|
||||
il.LicenseCfg = c.App.ClientLicense()
|
||||
} else {
|
||||
il.LicenseCfg = utils.GetSanitizedClientLicense()
|
||||
il.LicenseCfg = c.App.GetSanitizedClientLicense()
|
||||
}
|
||||
|
||||
w.Write([]byte(il.ToJson()))
|
||||
|
||||
@@ -1889,17 +1889,7 @@ func TestUpdateMfa(t *testing.T) {
|
||||
|
||||
Client := th.BasicClient
|
||||
|
||||
isLicensed := utils.IsLicensed()
|
||||
license := utils.License()
|
||||
defer func() {
|
||||
utils.SetIsLicensed(isLicensed)
|
||||
utils.SetLicense(license)
|
||||
}()
|
||||
utils.SetIsLicensed(false)
|
||||
utils.SetLicense(&model.License{Features: &model.Features{}})
|
||||
if utils.License().Features.MFA == nil {
|
||||
utils.License().Features.MFA = new(bool)
|
||||
}
|
||||
th.App.SetLicense(nil)
|
||||
|
||||
team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
|
||||
rteam, _ := Client.CreateTeam(&team)
|
||||
@@ -1925,8 +1915,7 @@ func TestUpdateMfa(t *testing.T) {
|
||||
t.Fatal("should have failed - not licensed")
|
||||
}
|
||||
|
||||
utils.SetIsLicensed(true)
|
||||
*utils.License().Features.MFA = true
|
||||
th.App.SetLicense(model.NewTestLicense("mfa"))
|
||||
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableMultifactorAuthentication = true })
|
||||
|
||||
if _, err := Client.UpdateMfa(true, "123456"); err == nil {
|
||||
|
||||
@@ -9,7 +9,6 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/mattermost/mattermost-server/model"
|
||||
"github.com/mattermost/mattermost-server/utils"
|
||||
)
|
||||
|
||||
func TestCreateIncomingHook(t *testing.T) {
|
||||
@@ -980,10 +979,6 @@ func TestIncomingWebhooks(t *testing.T) {
|
||||
user2 := th.CreateUser(Client)
|
||||
th.LinkUserToTeam(user2, team)
|
||||
|
||||
enableIncomingHooks := th.App.Config().ServiceSettings.EnableIncomingWebhooks
|
||||
defer func() {
|
||||
th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = enableIncomingHooks })
|
||||
}()
|
||||
th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = true })
|
||||
|
||||
hook := &model.IncomingWebhook{ChannelId: channel1.Id}
|
||||
@@ -1025,18 +1020,8 @@ func TestIncomingWebhooks(t *testing.T) {
|
||||
t.Fatal("should not have failed -- ExperimentalTownSquareIsReadOnly is false and it's not a read only channel")
|
||||
}
|
||||
|
||||
isLicensed := utils.IsLicensed()
|
||||
license := utils.License()
|
||||
disableTownSquareReadOnly := th.App.Config().TeamSettings.ExperimentalTownSquareIsReadOnly
|
||||
defer func() {
|
||||
th.App.UpdateConfig(func(cfg *model.Config) { cfg.TeamSettings.ExperimentalTownSquareIsReadOnly = disableTownSquareReadOnly })
|
||||
utils.SetIsLicensed(isLicensed)
|
||||
utils.SetLicense(license)
|
||||
}()
|
||||
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.ExperimentalTownSquareIsReadOnly = true })
|
||||
utils.SetIsLicensed(true)
|
||||
utils.SetLicense(&model.License{Features: &model.Features{}})
|
||||
utils.License().Features.SetDefaults()
|
||||
th.App.SetLicense(model.NewTestLicense())
|
||||
|
||||
if _, err := th.BasicClient.DoPost(url, fmt.Sprintf("{\"text\":\"this is a test\", \"channel\":\"%s\"}", model.DEFAULT_CHANNEL), "application/json"); err == nil {
|
||||
t.Fatal("should have failed -- ExperimentalTownSquareIsReadOnly is true and it's a read only channel")
|
||||
|
||||
Ссылка в новой задаче
Block a user