PLT-5900 Removed automatic configuration of SiteURL (#5952)

* Revert "PLT-5765 Passed SiteURL to SendNotifications (#5705)"

This reverts commit a8e68bd890.

* Removed automatic configuration of SiteURL

* Reverted unintentional config changes

* Updated help text

* Added link to docs in Site URL warning

* Fixed merge conflict
Этот коммит содержится в:
Harrison Healey
2017-04-04 11:54:52 -04:00
коммит произвёл Joram Wilander
родитель 3a79e451ff
Коммит c7bdce8a66
49 изменённых файлов: 336 добавлений и 268 удалений

Просмотреть файл

@@ -319,6 +319,7 @@ package: build build-client
@# Disable developer settings @# Disable developer settings
sed -i'' -e 's|"ConsoleLevel": "DEBUG"|"ConsoleLevel": "INFO"|g' $(DIST_PATH)/config/config.json sed -i'' -e 's|"ConsoleLevel": "DEBUG"|"ConsoleLevel": "INFO"|g' $(DIST_PATH)/config/config.json
sed -i'' -e 's|"SiteURL": "http://localhost:8065"|"SiteURL": ""|g' $(DIST_PATH)/config/config.json
@# Reset email sending to original configuration @# Reset email sending to original configuration
sed -i'' -e 's|"SendEmailNotifications": true,|"SendEmailNotifications": false,|g' $(DIST_PATH)/config/config.json sed -i'' -e 's|"SendEmailNotifications": true,|"SendEmailNotifications": false,|g' $(DIST_PATH)/config/config.json

Просмотреть файл

@@ -311,7 +311,7 @@ func adminResetPassword(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if err := app.UpdatePasswordByUserIdSendEmail(userId, newPassword, c.T("api.user.reset_password.method"), c.GetSiteURL()); err != nil { if err := app.UpdatePasswordByUserIdSendEmail(userId, newPassword, c.T("api.user.reset_password.method")); err != nil {
c.Err = err c.Err = err
return return
} }

Просмотреть файл

@@ -163,7 +163,7 @@ func (me *TestHelper) CreateUser(client *model.Client) *model.User {
func LinkUserToTeam(user *model.User, team *model.Team) { func LinkUserToTeam(user *model.User, team *model.Team) {
utils.DisableDebugLogForTest() utils.DisableDebugLogForTest()
err := app.JoinUserToTeam(team, user, utils.GetSiteURL()) err := app.JoinUserToTeam(team, user)
if err != nil { if err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
l4g.Close() l4g.Close()

Просмотреть файл

@@ -207,7 +207,7 @@ func updateChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} else { } else {
if oldChannelDisplayName != channel.DisplayName { if oldChannelDisplayName != channel.DisplayName {
if err := app.PostUpdateChannelDisplayNameMessage(c.Session.UserId, channel.Id, c.TeamId, oldChannelDisplayName, channel.DisplayName, c.GetSiteURL()); err != nil { if err := app.PostUpdateChannelDisplayNameMessage(c.Session.UserId, channel.Id, c.TeamId, oldChannelDisplayName, channel.DisplayName); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
} }
@@ -255,7 +255,7 @@ func updateChannelHeader(c *Context, w http.ResponseWriter, r *http.Request) {
c.Err = err c.Err = err
return return
} else { } else {
if err := app.PostUpdateChannelHeaderMessage(c.Session.UserId, channel.Id, c.TeamId, oldChannelHeader, channelHeader, c.GetSiteURL()); err != nil { if err := app.PostUpdateChannelHeaderMessage(c.Session.UserId, channel.Id, c.TeamId, oldChannelHeader, channelHeader); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
c.LogAudit("name=" + channel.Name) c.LogAudit("name=" + channel.Name)
@@ -301,7 +301,7 @@ func updateChannelPurpose(c *Context, w http.ResponseWriter, r *http.Request) {
c.Err = err c.Err = err
return return
} else { } else {
if err := app.PostUpdateChannelPurposeMessage(c.Session.UserId, channel.Id, c.TeamId, oldChannelPurpose, channelPurpose, c.GetSiteURL()); err != nil { if err := app.PostUpdateChannelPurposeMessage(c.Session.UserId, channel.Id, c.TeamId, oldChannelPurpose, channelPurpose); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
c.LogAudit("name=" + channel.Name) c.LogAudit("name=" + channel.Name)
@@ -412,7 +412,7 @@ func join(c *Context, w http.ResponseWriter, r *http.Request) {
} }
} }
if err = app.JoinChannel(channel, c.Session.UserId, c.GetSiteURL()); err != nil { if err = app.JoinChannel(channel, c.Session.UserId); err != nil {
c.Err = err c.Err = err
return return
} }
@@ -425,7 +425,7 @@ func leave(c *Context, w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r) params := mux.Vars(r)
id := params["channel_id"] id := params["channel_id"]
err := app.LeaveChannel(id, c.Session.UserId, c.GetSiteURL()) err := app.LeaveChannel(id, c.Session.UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -467,7 +467,7 @@ func deleteChannel(c *Context, w http.ResponseWriter, r *http.Request) {
} }
} }
err = app.DeleteChannel(channel, c.Session.UserId, c.GetSiteURL()) err = app.DeleteChannel(channel, c.Session.UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -663,7 +663,7 @@ func addMember(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
go app.PostAddToChannelMessage(oUser, nUser, channel, c.GetSiteURL()) go app.PostAddToChannelMessage(oUser, nUser, channel)
app.UpdateChannelLastViewedAt([]string{id}, oUser.Id) app.UpdateChannelLastViewedAt([]string{id}, oUser.Id)
w.Write([]byte(cm.ToJson())) w.Write([]byte(cm.ToJson()))
@@ -698,7 +698,7 @@ func removeMember(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if err = app.RemoveUserFromChannel(userIdToRemove, c.Session.UserId, channel, c.GetSiteURL()); err != nil { if err = app.RemoveUserFromChannel(userIdToRemove, c.Session.UserId, channel); err != nil {
c.Err = err c.Err = err
return return
} }

Просмотреть файл

@@ -66,7 +66,7 @@ func executeCommand(c *Context, w http.ResponseWriter, r *http.Request) {
commandArgs.UserId = c.Session.UserId commandArgs.UserId = c.Session.UserId
commandArgs.T = c.T commandArgs.T = c.T
commandArgs.Session = c.Session commandArgs.Session = c.Session
commandArgs.SiteURL = c.GetSiteURL() commandArgs.SiteURL = c.GetSiteURLHeader()
response, err := app.ExecuteCommand(commandArgs) response, err := app.ExecuteCommand(commandArgs)
if err != nil { if err != nil {

Просмотреть файл

@@ -26,7 +26,7 @@ type Context struct {
IpAddress string IpAddress string
Path string Path string
Err *model.AppError Err *model.AppError
siteURL string siteURLHeader string
teamURLValid bool teamURLValid bool
teamURL string teamURL string
T goi18n.TranslateFunc T goi18n.TranslateFunc
@@ -146,12 +146,7 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
isTokenFromQueryString = true isTokenFromQueryString = true
} }
if utils.GetSiteURL() == "" { c.SetSiteURLHeader(app.GetProtocol(r) + "://" + r.Host)
protocol := app.GetProtocol(r)
c.SetSiteURL(protocol + "://" + r.Host)
} else {
c.SetSiteURL(utils.GetSiteURL())
}
w.Header().Set(model.HEADER_REQUEST_ID, c.RequestId) w.Header().Set(model.HEADER_REQUEST_ID, c.RequestId)
w.Header().Set(model.HEADER_VERSION_ID, fmt.Sprintf("%v.%v.%v.%v", model.CurrentVersion, model.BuildNumber, utils.CfgHash, utils.IsLicensed)) w.Header().Set(model.HEADER_VERSION_ID, fmt.Sprintf("%v.%v.%v.%v", model.CurrentVersion, model.BuildNumber, utils.CfgHash, utils.IsLicensed))
@@ -191,11 +186,11 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
} }
if h.isApi || h.isTeamIndependent { if h.isApi || h.isTeamIndependent {
c.setTeamURL(c.GetSiteURL(), false) c.setTeamURL(c.GetSiteURLHeader(), false)
c.Path = r.URL.Path c.Path = r.URL.Path
} else { } else {
splitURL := strings.Split(r.URL.Path, "/") splitURL := strings.Split(r.URL.Path, "/")
c.setTeamURL(c.GetSiteURL()+"/"+splitURL[1], true) c.setTeamURL(c.GetSiteURLHeader()+"/"+splitURL[1], true)
c.Path = "/" + strings.Join(splitURL[2:], "/") c.Path = "/" + strings.Join(splitURL[2:], "/")
} }
@@ -391,16 +386,17 @@ func (c *Context) setTeamURL(url string, valid bool) {
func (c *Context) SetTeamURLFromSession() { func (c *Context) SetTeamURLFromSession() {
if result := <-app.Srv.Store.Team().Get(c.TeamId); result.Err == nil { if result := <-app.Srv.Store.Team().Get(c.TeamId); result.Err == nil {
c.setTeamURL(c.GetSiteURL()+"/"+result.Data.(*model.Team).Name, true) c.setTeamURL(c.GetSiteURLHeader()+"/"+result.Data.(*model.Team).Name, true)
} }
} }
func (c *Context) SetSiteURL(url string) { func (c *Context) SetSiteURLHeader(url string) {
c.siteURL = strings.TrimRight(url, "/") c.siteURLHeader = strings.TrimRight(url, "/")
} }
// TODO see where these are used
func (c *Context) GetTeamURLFromTeam(team *model.Team) string { func (c *Context) GetTeamURLFromTeam(team *model.Team) string {
return c.GetSiteURL() + "/" + team.Name return c.GetSiteURLHeader() + "/" + team.Name
} }
func (c *Context) GetTeamURL() string { func (c *Context) GetTeamURL() string {
@@ -413,8 +409,8 @@ func (c *Context) GetTeamURL() string {
return c.teamURL return c.teamURL
} }
func (c *Context) GetSiteURL() string { func (c *Context) GetSiteURLHeader() string {
return c.siteURL return c.siteURLHeader
} }
func (c *Context) GetCurrentTeamMember() *model.TeamMember { func (c *Context) GetCurrentTeamMember() *model.TeamMember {

Просмотреть файл

@@ -7,7 +7,7 @@ import (
"testing" "testing"
) )
func TestSiteURL(t *testing.T) { func TestSiteURLHeader(t *testing.T) {
c := &Context{} c := &Context{}
testCases := []struct { testCases := []struct {
@@ -19,10 +19,10 @@ func TestSiteURL(t *testing.T) {
} }
for _, tc := range testCases { for _, tc := range testCases {
c.SetSiteURL(tc.url) c.SetSiteURLHeader(tc.url)
if c.siteURL != tc.want { if c.siteURLHeader != tc.want {
t.Fatalf("expected %s, got %s", tc.want, c.siteURL) t.Fatalf("expected %s, got %s", tc.want, c.siteURLHeader)
} }
} }

Просмотреть файл

@@ -316,5 +316,5 @@ func getPublicLink(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
w.Write([]byte(model.StringToJson(app.GeneratePublicLinkV3(c.GetSiteURL(), info)))) w.Write([]byte(model.StringToJson(app.GeneratePublicLinkV3(c.GetSiteURLHeader(), info))))
} }

Просмотреть файл

@@ -271,7 +271,7 @@ func completeOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
state := r.URL.Query().Get("state") state := r.URL.Query().Get("state")
uri := c.GetSiteURL() + "/signup/" + service + "/complete" uri := c.GetSiteURLHeader() + "/signup/" + service + "/complete"
if body, teamId, props, err := AuthorizeOAuthUser(service, code, state, uri); err != nil { if body, teamId, props, err := AuthorizeOAuthUser(service, code, state, uri); err != nil {
c.Err = err c.Err = err
@@ -285,7 +285,7 @@ func completeOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
action := props["action"] action := props["action"]
switch action { switch action {
case model.OAUTH_ACTION_SIGNUP: case model.OAUTH_ACTION_SIGNUP:
if user, err := app.CreateOAuthUser(service, body, teamId, c.GetSiteURL()); err != nil { if user, err := app.CreateOAuthUser(service, body, teamId); err != nil {
c.Err = err c.Err = err
} else { } else {
doLogin(c, w, r, user, "") doLogin(c, w, r, user, "")
@@ -297,11 +297,11 @@ func completeOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
case model.OAUTH_ACTION_LOGIN: case model.OAUTH_ACTION_LOGIN:
user := LoginByOAuth(c, w, r, service, body) user := LoginByOAuth(c, w, r, service, body)
if len(teamId) > 0 { if len(teamId) > 0 {
c.Err = app.AddUserToTeamByTeamId(teamId, user, c.GetSiteURL()) c.Err = app.AddUserToTeamByTeamId(teamId, user)
} }
if c.Err == nil { if c.Err == nil {
if val, ok := props["redirect_to"]; ok { if val, ok := props["redirect_to"]; ok {
http.Redirect(w, r, c.GetSiteURL()+val, http.StatusTemporaryRedirect) http.Redirect(w, r, c.GetSiteURLHeader()+val, http.StatusTemporaryRedirect)
return return
} }
http.Redirect(w, r, app.GetProtocol(r)+"://"+r.Host, http.StatusTemporaryRedirect) http.Redirect(w, r, app.GetProtocol(r)+"://"+r.Host, http.StatusTemporaryRedirect)
@@ -361,7 +361,7 @@ func authorizeOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
// here we should check if the user is logged in // here we should check if the user is logged in
if len(c.Session.UserId) == 0 { if len(c.Session.UserId) == 0 {
http.Redirect(w, r, c.GetSiteURL()+"/login?redirect_to="+url.QueryEscape(r.RequestURI), http.StatusFound) http.Redirect(w, r, c.GetSiteURLHeader()+"/login?redirect_to="+url.QueryEscape(r.RequestURI), http.StatusFound)
return return
} }
@@ -382,7 +382,7 @@ func authorizeOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
doAllow := func() (*http.Response, *model.AppError) { doAllow := func() (*http.Response, *model.AppError) {
HttpClient := &http.Client{} HttpClient := &http.Client{}
url := c.GetSiteURL() + "/api/v3/oauth/allow?response_type=" + model.AUTHCODE_RESPONSE_TYPE + "&client_id=" + clientId + "&redirect_uri=" + url.QueryEscape(redirect) + "&scope=" + scope + "&state=" + url.QueryEscape(state) url := c.GetSiteURLHeader() + "/api/v3/oauth/allow?response_type=" + model.AUTHCODE_RESPONSE_TYPE + "&client_id=" + clientId + "&redirect_uri=" + url.QueryEscape(redirect) + "&scope=" + scope + "&state=" + url.QueryEscape(state)
rq, _ := http.NewRequest("GET", url, strings.NewReader("")) rq, _ := http.NewRequest("GET", url, strings.NewReader(""))
rq.Header.Set(model.HEADER_AUTH, model.HEADER_BEARER+" "+c.Session.Token) rq.Header.Set(model.HEADER_AUTH, model.HEADER_BEARER+" "+c.Session.Token)
@@ -702,7 +702,7 @@ func GetAuthorizationCode(c *Context, service string, props map[string]string, l
props["hash"] = model.HashPassword(clientId) props["hash"] = model.HashPassword(clientId)
state := b64.StdEncoding.EncodeToString([]byte(model.MapToJson(props))) state := b64.StdEncoding.EncodeToString([]byte(model.MapToJson(props)))
redirectUri := c.GetSiteURL() + "/signup/" + service + "/complete" redirectUri := c.GetSiteURLHeader() + "/signup/" + service + "/complete"
authUrl := endpoint + "?response_type=code&client_id=" + clientId + "&redirect_uri=" + url.QueryEscape(redirectUri) + "&state=" + url.QueryEscape(state) authUrl := endpoint + "?response_type=code&client_id=" + clientId + "&redirect_uri=" + url.QueryEscape(redirectUri) + "&state=" + url.QueryEscape(state)
@@ -842,7 +842,7 @@ func CompleteSwitchWithOAuth(c *Context, w http.ResponseWriter, r *http.Request,
} }
go func() { go func() {
if err := app.SendSignInChangeEmail(user.Email, strings.Title(service)+" SSO", user.Locale, c.GetSiteURL()); err != nil { if err := app.SendSignInChangeEmail(user.Email, strings.Title(service)+" SSO", user.Locale, utils.GetSiteURL()); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
}() }()

Просмотреть файл

@@ -60,7 +60,7 @@ func createPost(c *Context, w http.ResponseWriter, r *http.Request) {
post.CreateAt = 0 post.CreateAt = 0
} }
rp, err := app.CreatePostAsUser(post, c.GetSiteURL()) rp, err := app.CreatePostAsUser(post)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -344,7 +344,7 @@ func getPermalinkTmp(c *Context, w http.ResponseWriter, r *http.Request) {
} }
} }
if list, err := app.GetPermalinkPost(postId, c.Session.UserId, c.GetSiteURL()); err != nil { if list, err := app.GetPermalinkPost(postId, c.Session.UserId); err != nil {
c.Err = err c.Err = err
return return
} else if HandleEtag(list.Etag(), "Get Permalink TMP", w, r) { } else if HandleEtag(list.Etag(), "Get Permalink TMP", w, r) {

Просмотреть файл

@@ -61,7 +61,7 @@ func createTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
rteam, err := app.CreateTeamWithUser(team, c.Session.UserId, c.GetSiteURL()) rteam, err := app.CreateTeamWithUser(team, c.Session.UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -131,7 +131,7 @@ func inviteMembers(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if err := app.InviteNewUsersToTeam(invites.ToEmailList(), c.TeamId, c.Session.UserId, c.GetSiteURL()); err != nil { if err := app.InviteNewUsersToTeam(invites.ToEmailList(), c.TeamId, c.Session.UserId); err != nil {
c.Err = err c.Err = err
return return
} }
@@ -153,7 +153,7 @@ func addUserToTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if _, err := app.AddUserToTeam(c.TeamId, userId, c.GetSiteURL()); err != nil { if _, err := app.AddUserToTeam(c.TeamId, userId); err != nil {
c.Err = err c.Err = err
return return
} }
@@ -195,9 +195,9 @@ func addUserToTeamFromInvite(c *Context, w http.ResponseWriter, r *http.Request)
var err *model.AppError var err *model.AppError
if len(hash) > 0 { if len(hash) > 0 {
team, err = app.AddUserToTeamByHash(c.Session.UserId, hash, data, c.GetSiteURL()) team, err = app.AddUserToTeamByHash(c.Session.UserId, hash, data)
} else if len(inviteId) > 0 { } else if len(inviteId) > 0 {
team, err = app.AddUserToTeamByInviteId(inviteId, c.Session.UserId, c.GetSiteURL()) team, err = app.AddUserToTeamByInviteId(inviteId, c.Session.UserId)
} else { } else {
c.Err = model.NewLocAppError("addUserToTeamFromInvite", "api.user.create_user.signup_link_invalid.app_error", nil, "") c.Err = model.NewLocAppError("addUserToTeamFromInvite", "api.user.create_user.signup_link_invalid.app_error", nil, "")
return return

Просмотреть файл

@@ -87,11 +87,11 @@ func createUser(c *Context, w http.ResponseWriter, r *http.Request) {
var ruser *model.User var ruser *model.User
var err *model.AppError var err *model.AppError
if len(hash) > 0 { if len(hash) > 0 {
ruser, err = app.CreateUserWithHash(user, hash, r.URL.Query().Get("d"), c.GetSiteURL()) ruser, err = app.CreateUserWithHash(user, hash, r.URL.Query().Get("d"))
} else if len(inviteId) > 0 { } else if len(inviteId) > 0 {
ruser, err = app.CreateUserWithInviteId(user, inviteId, c.GetSiteURL()) ruser, err = app.CreateUserWithInviteId(user, inviteId)
} else { } else {
ruser, err = app.CreateUserFromSignup(user, c.GetSiteURL()) ruser, err = app.CreateUserFromSignup(user)
} }
if err != nil { if err != nil {
@@ -156,7 +156,7 @@ func LoginByOAuth(c *Context, w http.ResponseWriter, r *http.Request, service st
var err *model.AppError var err *model.AppError
if user, err = app.GetUserByAuth(&authData, service); err != nil { if user, err = app.GetUserByAuth(&authData, service); err != nil {
if err.Id == store.MISSING_AUTH_ACCOUNT_ERROR { if err.Id == store.MISSING_AUTH_ACCOUNT_ERROR {
if user, err = app.CreateOAuthUser(service, bytes.NewReader(buf.Bytes()), "", c.GetSiteURL()); err != nil { if user, err = app.CreateOAuthUser(service, bytes.NewReader(buf.Bytes()), ""); err != nil {
c.Err = err c.Err = err
return nil return nil
} }
@@ -165,7 +165,7 @@ func LoginByOAuth(c *Context, w http.ResponseWriter, r *http.Request, service st
return nil return nil
} }
if err = app.UpdateOAuthUserAttrs(bytes.NewReader(buf.Bytes()), user, provider, service, c.siteURL); err != nil { if err = app.UpdateOAuthUserAttrs(bytes.NewReader(buf.Bytes()), user, provider, service); err != nil {
c.Err = err c.Err = err
return nil return nil
} }
@@ -686,7 +686,7 @@ func updateUser(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if ruser, err := app.UpdateUserAsUser(user, c.GetSiteURL(), c.IsSystemAdmin()); err != nil { if ruser, err := app.UpdateUserAsUser(user, c.IsSystemAdmin()); err != nil {
c.Err = err c.Err = err
return return
} else { } else {
@@ -719,7 +719,7 @@ func updatePassword(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if err := app.UpdatePasswordAsUser(userId, currentPassword, newPassword, c.GetSiteURL()); err != nil { if err := app.UpdatePasswordAsUser(userId, currentPassword, newPassword); err != nil {
c.LogAudit("failed") c.LogAudit("failed")
c.Err = err c.Err = err
return return
@@ -801,7 +801,7 @@ func sendPasswordReset(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if sent, err := app.SendPasswordReset(email, c.GetSiteURL()); err != nil { if sent, err := app.SendPasswordReset(email, utils.GetSiteURL()); err != nil {
c.Err = err c.Err = err
return return
} else if sent { } else if sent {
@@ -824,7 +824,7 @@ func resetPassword(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt - code=" + code) c.LogAudit("attempt - code=" + code)
if err := app.ResetPasswordFromCode(code, newPassword, c.GetSiteURL()); err != nil { if err := app.ResetPasswordFromCode(code, newPassword); err != nil {
c.LogAudit("fail - code=" + code) c.LogAudit("fail - code=" + code)
c.Err = err c.Err = err
return return
@@ -877,7 +877,7 @@ func updateUserNotify(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
ruser, err := app.UpdateUserNotifyProps(userId, props, c.GetSiteURL()) ruser, err := app.UpdateUserNotifyProps(userId, props)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -936,7 +936,7 @@ func emailToOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
m := map[string]string{} m := map[string]string{}
if service == model.USER_AUTH_SERVICE_SAML { if service == model.USER_AUTH_SERVICE_SAML {
m["follow_link"] = c.GetSiteURL() + "/login/sso/saml?action=" + model.OAUTH_ACTION_EMAIL_TO_SSO + "&email=" + email m["follow_link"] = c.GetSiteURLHeader() + "/login/sso/saml?action=" + model.OAUTH_ACTION_EMAIL_TO_SSO + "&email=" + email
} else { } else {
if authUrl, err := GetAuthorizationCode(c, service, stateProps, ""); err != nil { if authUrl, err := GetAuthorizationCode(c, service, stateProps, ""); err != nil {
c.LogAuditWithUserId(user.Id, "fail - oauth issue") c.LogAuditWithUserId(user.Id, "fail - oauth issue")
@@ -990,7 +990,7 @@ func oauthToEmail(c *Context, w http.ResponseWriter, r *http.Request) {
} }
go func() { go func() {
if err := app.SendSignInChangeEmail(user.Email, c.T("api.templates.signin_change_email.body.method_email"), user.Locale, c.GetSiteURL()); err != nil { if err := app.SendSignInChangeEmail(user.Email, c.T("api.templates.signin_change_email.body.method_email"), user.Locale, utils.GetSiteURL()); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
}() }()
@@ -1083,7 +1083,7 @@ func emailToLdap(c *Context, w http.ResponseWriter, r *http.Request) {
} }
go func() { go func() {
if err := app.SendSignInChangeEmail(user.Email, "AD/LDAP", user.Locale, c.GetSiteURL()); err != nil { if err := app.SendSignInChangeEmail(user.Email, "AD/LDAP", user.Locale, utils.GetSiteURL()); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
}() }()
@@ -1170,7 +1170,7 @@ func ldapToEmail(c *Context, w http.ResponseWriter, r *http.Request) {
} }
go func() { go func() {
if err := app.SendSignInChangeEmail(user.Email, c.T("api.templates.signin_change_email.body.method_email"), user.Locale, c.GetSiteURL()); err != nil { if err := app.SendSignInChangeEmail(user.Email, c.T("api.templates.signin_change_email.body.method_email"), user.Locale, utils.GetSiteURL()); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
}() }()
@@ -1224,9 +1224,9 @@ func resendVerification(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} else { } else {
if _, err := app.GetStatus(user.Id); err != nil { if _, err := app.GetStatus(user.Id); err != nil {
go app.SendVerifyEmail(user.Id, user.Email, user.Locale, c.GetSiteURL()) go app.SendVerifyEmail(user.Id, user.Email, user.Locale, utils.GetSiteURL())
} else { } else {
go app.SendEmailChangeVerifyEmail(user.Id, user.Email, user.Locale, c.GetSiteURL()) go app.SendEmailChangeVerifyEmail(user.Id, user.Email, user.Locale, utils.GetSiteURL())
} }
} }
} }
@@ -1286,7 +1286,7 @@ func updateMfa(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if err := app.SendMfaChangeEmail(user.Email, activate, user.Locale, c.GetSiteURL()); err != nil { if err := app.SendMfaChangeEmail(user.Email, activate, user.Locale, utils.GetSiteURL()); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
}() }()
@@ -1391,7 +1391,7 @@ func completeSaml(c *Context, w http.ResponseWriter, r *http.Request) {
relayProps = model.MapFromJson(strings.NewReader(stateStr)) relayProps = model.MapFromJson(strings.NewReader(stateStr))
} }
if user, err := samlInterface.DoLogin(encodedXML, relayProps, c.GetSiteURL()); err != nil { if user, err := samlInterface.DoLogin(encodedXML, relayProps); err != nil {
c.Err = err c.Err = err
c.Err.StatusCode = http.StatusFound c.Err.StatusCode = http.StatusFound
return return
@@ -1416,7 +1416,7 @@ func completeSaml(c *Context, w http.ResponseWriter, r *http.Request) {
} }
c.LogAuditWithUserId(user.Id, "Revoked all sessions for user") c.LogAuditWithUserId(user.Id, "Revoked all sessions for user")
go func() { go func() {
if err := app.SendSignInChangeEmail(user.Email, strings.Title(model.USER_AUTH_SERVICE_SAML)+" SSO", user.Locale, c.GetSiteURL()); err != nil { if err := app.SendSignInChangeEmail(user.Email, strings.Title(model.USER_AUTH_SERVICE_SAML)+" SSO", user.Locale, utils.GetSiteURL()); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
}() }()
@@ -1428,7 +1428,7 @@ func completeSaml(c *Context, w http.ResponseWriter, r *http.Request) {
} }
if val, ok := relayProps["redirect_to"]; ok { if val, ok := relayProps["redirect_to"]; ok {
http.Redirect(w, r, c.GetSiteURL()+val, http.StatusFound) http.Redirect(w, r, c.GetSiteURLHeader()+val, http.StatusFound)
return return
} }

Просмотреть файл

@@ -374,7 +374,7 @@ func incomingWebhook(c *Context, w http.ResponseWriter, r *http.Request) {
parsedRequest := model.IncomingWebhookRequestFromJson(payload) parsedRequest := model.IncomingWebhookRequestFromJson(payload)
err := app.HandleIncomingWebhook(id, parsedRequest, c.GetSiteURL()) err := app.HandleIncomingWebhook(id, parsedRequest)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return

Просмотреть файл

@@ -362,7 +362,7 @@ func (me *TestHelper) UpdateActiveUser(user *model.User, active bool) {
func LinkUserToTeam(user *model.User, team *model.Team) { func LinkUserToTeam(user *model.User, team *model.Team) {
utils.DisableDebugLogForTest() utils.DisableDebugLogForTest()
err := app.JoinUserToTeam(team, user, utils.GetSiteURL()) err := app.JoinUserToTeam(team, user)
if err != nil { if err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
l4g.Close() l4g.Close()

Просмотреть файл

@@ -138,7 +138,7 @@ func updateChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} else { } else {
if oldChannelDisplayName != channel.DisplayName { if oldChannelDisplayName != channel.DisplayName {
if err := app.PostUpdateChannelDisplayNameMessage(c.Session.UserId, channel.Id, c.Params.TeamId, oldChannelDisplayName, channel.DisplayName, c.GetSiteURL()); err != nil { if err := app.PostUpdateChannelDisplayNameMessage(c.Session.UserId, channel.Id, c.Params.TeamId, oldChannelDisplayName, channel.DisplayName); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
} }
@@ -459,7 +459,7 @@ func deleteChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
err = app.DeleteChannel(channel, c.Session.UserId, c.GetSiteURL()) err = app.DeleteChannel(channel, c.Session.UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -733,7 +733,7 @@ func addChannelMember(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if cm, err := app.AddChannelMember(member.UserId, channel, c.Session.UserId, c.GetSiteURL()); err != nil { if cm, err := app.AddChannelMember(member.UserId, channel, c.Session.UserId); err != nil {
c.Err = err c.Err = err
return return
} else { } else {
@@ -768,7 +768,7 @@ func removeChannelMember(c *Context, w http.ResponseWriter, r *http.Request) {
} }
} }
if err = app.RemoveUserFromChannel(c.Params.UserId, c.Session.UserId, channel, c.GetSiteURL()); err != nil { if err = app.RemoveUserFromChannel(c.Params.UserId, c.Session.UserId, channel); err != nil {
c.Err = err c.Err = err
return return
} }

Просмотреть файл

@@ -680,7 +680,7 @@ func TestDeleteChannel(t *testing.T) {
if ch, err := app.GetChannel(publicChannel1.Id); err == nil && ch.DeleteAt == 0 { if ch, err := app.GetChannel(publicChannel1.Id); err == nil && ch.DeleteAt == 0 {
t.Fatal("should have failed to get deleted channel") t.Fatal("should have failed to get deleted channel")
} else if err := app.JoinChannel(ch, user2.Id, ""); err == nil { } else if err := app.JoinChannel(ch, user2.Id); err == nil {
t.Fatal("should have failed to join deleted channel") t.Fatal("should have failed to join deleted channel")
} }

Просмотреть файл

@@ -26,7 +26,7 @@ type Context struct {
RequestId string RequestId string
IpAddress string IpAddress string
Path string Path string
siteURL string siteURLHeader string
} }
func ApiHandler(h func(*Context, http.ResponseWriter, *http.Request)) http.Handler { func ApiHandler(h func(*Context, http.ResponseWriter, *http.Request)) http.Handler {
@@ -125,12 +125,7 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
isTokenFromQueryString = true isTokenFromQueryString = true
} }
if utils.GetSiteURL() == "" { c.SetSiteURLHeader(app.GetProtocol(r) + "://" + r.Host)
protocol := app.GetProtocol(r)
c.SetSiteURL(protocol + "://" + r.Host)
} else {
c.SetSiteURL(utils.GetSiteURL())
}
w.Header().Set(model.HEADER_REQUEST_ID, c.RequestId) w.Header().Set(model.HEADER_REQUEST_ID, c.RequestId)
w.Header().Set(model.HEADER_VERSION_ID, fmt.Sprintf("%v.%v.%v.%v", model.CurrentVersion, model.BuildNumber, utils.CfgHash, utils.IsLicensed)) w.Header().Set(model.HEADER_VERSION_ID, fmt.Sprintf("%v.%v.%v.%v", model.CurrentVersion, model.BuildNumber, utils.CfgHash, utils.IsLicensed))
@@ -320,12 +315,12 @@ func (c *Context) SetPermissionError(permission *model.Permission) {
c.Err.StatusCode = http.StatusForbidden c.Err.StatusCode = http.StatusForbidden
} }
func (c *Context) SetSiteURL(url string) { func (c *Context) SetSiteURLHeader(url string) {
c.siteURL = strings.TrimRight(url, "/") c.siteURLHeader = strings.TrimRight(url, "/")
} }
func (c *Context) GetSiteURL() string { func (c *Context) GetSiteURLHeader() string {
return c.siteURL return c.siteURLHeader
} }
func (c *Context) RequireUserId() *Context { func (c *Context) RequireUserId() *Context {

Просмотреть файл

@@ -160,7 +160,7 @@ func getFileLink(c *Context, w http.ResponseWriter, r *http.Request) {
} }
resp := make(map[string]string) resp := make(map[string]string)
resp["link"] = app.GeneratePublicLink(c.GetSiteURL(), info) resp["link"] = app.GeneratePublicLink(c.GetSiteURLHeader(), info)
w.Write([]byte(model.MapToJson(resp))) w.Write([]byte(model.MapToJson(resp)))
} }

Просмотреть файл

@@ -48,7 +48,7 @@ func createPost(c *Context, w http.ResponseWriter, r *http.Request) {
post.CreateAt = 0 post.CreateAt = 0
} }
rp, err := app.CreatePostAsUser(post, c.GetSiteURL()) rp, err := app.CreatePostAsUser(post)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return

Просмотреть файл

@@ -63,7 +63,7 @@ func createTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
rteam, err := app.CreateTeamWithUser(team, c.Session.UserId, c.GetSiteURL()) rteam, err := app.CreateTeamWithUser(team, c.Session.UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -349,14 +349,14 @@ func addTeamMember(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
member, err = app.AddTeamMember(member.TeamId, member.UserId, c.GetSiteURL()) member, err = app.AddTeamMember(member.TeamId, member.UserId)
} else if len(hash) > 0 && len(data) > 0 { } else if len(hash) > 0 && len(data) > 0 {
member, err = app.AddTeamMemberByHash(c.Session.UserId, hash, data, c.GetSiteURL()) member, err = app.AddTeamMemberByHash(c.Session.UserId, hash, data)
if err != nil { if err != nil {
err = model.NewAppError("addTeamMember", "api.team.add_user_to_team.invalid_data.app_error", nil, "", http.StatusNotFound) err = model.NewAppError("addTeamMember", "api.team.add_user_to_team.invalid_data.app_error", nil, "", http.StatusNotFound)
} }
} else if len(inviteId) > 0 { } else if len(inviteId) > 0 {
member, err = app.AddTeamMemberByInviteId(inviteId, c.Session.UserId, c.GetSiteURL()) member, err = app.AddTeamMemberByInviteId(inviteId, c.Session.UserId)
if err != nil { if err != nil {
err = model.NewAppError("addTeamMember", "api.team.add_user_to_team.invalid_invite_id.app_error", nil, "", http.StatusNotFound) err = model.NewAppError("addTeamMember", "api.team.add_user_to_team.invalid_invite_id.app_error", nil, "", http.StatusNotFound)
} }
@@ -407,7 +407,7 @@ func addTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
members, err = app.AddTeamMembers(c.Params.TeamId, userIds, c.GetSiteURL()) members, err = app.AddTeamMembers(c.Params.TeamId, userIds)
if err != nil { if err != nil {
c.Err = err c.Err = err
@@ -673,7 +673,7 @@ func inviteUsersToTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
err := app.InviteNewUsersToTeam(emailList, c.Params.TeamId, c.Session.UserId, utils.GetSiteURL()) err := app.InviteNewUsersToTeam(emailList, c.Params.TeamId, c.Session.UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return

Просмотреть файл

@@ -69,13 +69,13 @@ func createUser(c *Context, w http.ResponseWriter, r *http.Request) {
var ruser *model.User var ruser *model.User
var err *model.AppError var err *model.AppError
if len(hash) > 0 { if len(hash) > 0 {
ruser, err = app.CreateUserWithHash(user, hash, r.URL.Query().Get("d"), c.GetSiteURL()) ruser, err = app.CreateUserWithHash(user, hash, r.URL.Query().Get("d"))
} else if len(inviteId) > 0 { } else if len(inviteId) > 0 {
ruser, err = app.CreateUserWithInviteId(user, inviteId, c.GetSiteURL()) ruser, err = app.CreateUserWithInviteId(user, inviteId)
} else if c.IsSystemAdmin() { } else if c.IsSystemAdmin() {
ruser, err = app.CreateUserAsAdmin(user, c.GetSiteURL()) ruser, err = app.CreateUserAsAdmin(user)
} else { } else {
ruser, err = app.CreateUserFromSignup(user, c.GetSiteURL()) ruser, err = app.CreateUserFromSignup(user)
} }
if err != nil { if err != nil {
@@ -493,7 +493,7 @@ func updateUser(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if ruser, err := app.UpdateUserAsUser(user, c.GetSiteURL(), c.IsSystemAdmin()); err != nil { if ruser, err := app.UpdateUserAsUser(user, c.IsSystemAdmin()); err != nil {
c.Err = err c.Err = err
return return
} else { } else {
@@ -519,7 +519,7 @@ func patchUser(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if ruser, err := app.PatchUser(c.Params.UserId, patch, c.GetSiteURL(), c.IsSystemAdmin()); err != nil { if ruser, err := app.PatchUser(c.Params.UserId, patch, c.IsSystemAdmin()); err != nil {
c.Err = err c.Err = err
return return
} else { } else {
@@ -640,7 +640,7 @@ func updateUserMfa(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt") c.LogAudit("attempt")
if err := app.UpdateMfa(activate, c.Params.UserId, code, c.GetSiteURL()); err != nil { if err := app.UpdateMfa(activate, c.Params.UserId, code); err != nil {
c.Err = err c.Err = err
return return
} }
@@ -692,9 +692,9 @@ func updatePassword(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
err = app.UpdatePasswordAsUser(c.Params.UserId, currentPassword, newPassword, c.GetSiteURL()) err = app.UpdatePasswordAsUser(c.Params.UserId, currentPassword, newPassword)
} else if app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) { } else if app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) {
err = app.UpdatePasswordByUserIdSendEmail(c.Params.UserId, newPassword, c.T("api.user.reset_password.method"), c.GetSiteURL()) err = app.UpdatePasswordByUserIdSendEmail(c.Params.UserId, newPassword, c.T("api.user.reset_password.method"))
} else { } else {
err = model.NewAppError("updatePassword", "api.user.update_password.context.app_error", nil, "", http.StatusForbidden) err = model.NewAppError("updatePassword", "api.user.update_password.context.app_error", nil, "", http.StatusForbidden)
} }
@@ -722,7 +722,7 @@ func resetPassword(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt - code=" + code) c.LogAudit("attempt - code=" + code)
if err := app.ResetPasswordFromCode(code, newPassword, c.GetSiteURL()); err != nil { if err := app.ResetPasswordFromCode(code, newPassword); err != nil {
c.LogAudit("fail - code=" + code) c.LogAudit("fail - code=" + code)
c.Err = err c.Err = err
return return
@@ -742,7 +742,7 @@ func sendPasswordReset(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if sent, err := app.SendPasswordReset(email, c.GetSiteURL()); err != nil { if sent, err := app.SendPasswordReset(email, utils.GetSiteURL()); err != nil {
c.Err = err c.Err = err
return return
} else if sent { } else if sent {
@@ -974,9 +974,9 @@ func sendVerificationEmail(c *Context, w http.ResponseWriter, r *http.Request) {
} }
if _, err := app.GetStatus(user.Id); err != nil { if _, err := app.GetStatus(user.Id); err != nil {
go app.SendVerifyEmail(user.Id, user.Email, user.Locale, c.GetSiteURL()) go app.SendVerifyEmail(user.Id, user.Email, user.Locale, utils.GetSiteURL())
} else { } else {
go app.SendEmailChangeVerifyEmail(user.Id, user.Email, user.Locale, c.GetSiteURL()) go app.SendEmailChangeVerifyEmail(user.Id, user.Email, user.Locale, utils.GetSiteURL())
} }
ReturnStatusOK(w) ReturnStatusOK(w)

Просмотреть файл

@@ -161,7 +161,7 @@ func (me *TestHelper) CreatePost(channel *model.Channel) *model.Post {
utils.DisableDebugLogForTest() utils.DisableDebugLogForTest()
var err *model.AppError var err *model.AppError
if post, err = CreatePost(post, channel.TeamId, false, utils.GetSiteURL()); err != nil { if post, err = CreatePost(post, channel.TeamId, false); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
l4g.Close() l4g.Close()
time.Sleep(time.Second) time.Sleep(time.Second)
@@ -174,7 +174,7 @@ func (me *TestHelper) CreatePost(channel *model.Channel) *model.Post {
func LinkUserToTeam(user *model.User, team *model.Team) { func LinkUserToTeam(user *model.User, team *model.Team) {
utils.DisableDebugLogForTest() utils.DisableDebugLogForTest()
err := JoinUserToTeam(team, user, utils.GetSiteURL()) err := JoinUserToTeam(team, user)
if err != nil { if err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
l4g.Close() l4g.Close()

Просмотреть файл

@@ -32,7 +32,7 @@ func CreateDefaultChannels(teamId string) ([]*model.Channel, *model.AppError) {
return channels, nil return channels, nil
} }
func JoinDefaultChannels(teamId string, user *model.User, channelRole string, siteURL string) *model.AppError { func JoinDefaultChannels(teamId string, user *model.User, channelRole string) *model.AppError {
var err *model.AppError = nil var err *model.AppError = nil
if result := <-Srv.Store.Channel().GetByName(teamId, "town-square", true); result.Err != nil { if result := <-Srv.Store.Channel().GetByName(teamId, "town-square", true); result.Err != nil {
@@ -47,7 +47,7 @@ func JoinDefaultChannels(teamId string, user *model.User, channelRole string, si
err = cmResult.Err err = cmResult.Err
} }
if err := postJoinChannelMessage(user, townSquare, siteURL); err != nil { if err := postJoinChannelMessage(user, townSquare); err != nil {
l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err) l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err)
} }
@@ -66,7 +66,7 @@ func JoinDefaultChannels(teamId string, user *model.User, channelRole string, si
err = cmResult.Err err = cmResult.Err
} }
if err := postJoinChannelMessage(user, offTopic, siteURL); err != nil { if err := postJoinChannelMessage(user, offTopic); err != nil {
l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err) l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err)
} }
@@ -315,7 +315,7 @@ func UpdateChannelMemberNotifyProps(data map[string]string, channelId string, us
} }
} }
func DeleteChannel(channel *model.Channel, userId string, siteURL string) *model.AppError { func DeleteChannel(channel *model.Channel, userId string) *model.AppError {
uc := Srv.Store.User().Get(userId) uc := Srv.Store.User().Get(userId)
ihc := Srv.Store.Webhook().GetIncomingByChannel(channel.Id) ihc := Srv.Store.Webhook().GetIncomingByChannel(channel.Id)
ohc := Srv.Store.Webhook().GetOutgoingByChannel(channel.Id, -1, -1) ohc := Srv.Store.Webhook().GetOutgoingByChannel(channel.Id, -1, -1)
@@ -355,7 +355,7 @@ func DeleteChannel(channel *model.Channel, userId string, siteURL string) *model
}, },
} }
if _, err := CreatePost(post, channel.TeamId, false, siteURL); err != nil { if _, err := CreatePost(post, channel.TeamId, false); err != nil {
l4g.Error(utils.T("api.channel.delete_channel.failed_post.error"), err) l4g.Error(utils.T("api.channel.delete_channel.failed_post.error"), err)
} }
@@ -451,7 +451,7 @@ func AddUserToChannel(user *model.User, channel *model.Channel) (*model.ChannelM
return newMember, nil return newMember, nil
} }
func AddChannelMember(userId string, channel *model.Channel, userRequestorId, siteURL string) (*model.ChannelMember, *model.AppError) { func AddChannelMember(userId string, channel *model.Channel, userRequestorId string) (*model.ChannelMember, *model.AppError) {
var user *model.User var user *model.User
var err *model.AppError var err *model.AppError
@@ -469,7 +469,7 @@ func AddChannelMember(userId string, channel *model.Channel, userRequestorId, si
return nil, err return nil, err
} }
go PostAddToChannelMessage(userRequestor, user, channel, siteURL) go PostAddToChannelMessage(userRequestor, user, channel)
UpdateChannelLastViewedAt([]string{channel.Id}, userRequestor.Id) UpdateChannelLastViewedAt([]string{channel.Id}, userRequestor.Id)
@@ -512,7 +512,7 @@ func AddDirectChannels(teamId string, user *model.User) *model.AppError {
return nil return nil
} }
func PostUpdateChannelHeaderMessage(userId string, channelId string, teamId string, oldChannelHeader, newChannelHeader string, siteURL string) *model.AppError { func PostUpdateChannelHeaderMessage(userId string, channelId string, teamId string, oldChannelHeader, newChannelHeader string) *model.AppError {
uc := Srv.Store.User().Get(userId) uc := Srv.Store.User().Get(userId)
if uresult := <-uc; uresult.Err != nil { if uresult := <-uc; uresult.Err != nil {
@@ -541,7 +541,7 @@ func PostUpdateChannelHeaderMessage(userId string, channelId string, teamId stri
}, },
} }
if _, err := CreatePost(post, teamId, false, siteURL); err != nil { if _, err := CreatePost(post, teamId, false); err != nil {
return model.NewLocAppError("", "api.channel.post_update_channel_header_message_and_forget.post.error", nil, err.Error()) return model.NewLocAppError("", "api.channel.post_update_channel_header_message_and_forget.post.error", nil, err.Error())
} }
} }
@@ -549,7 +549,7 @@ func PostUpdateChannelHeaderMessage(userId string, channelId string, teamId stri
return nil return nil
} }
func PostUpdateChannelPurposeMessage(userId string, channelId string, teamId string, oldChannelPurpose string, newChannelPurpose string, siteURL string) *model.AppError { func PostUpdateChannelPurposeMessage(userId string, channelId string, teamId string, oldChannelPurpose string, newChannelPurpose string) *model.AppError {
uc := Srv.Store.User().Get(userId) uc := Srv.Store.User().Get(userId)
if uresult := <-uc; uresult.Err != nil { if uresult := <-uc; uresult.Err != nil {
@@ -577,7 +577,7 @@ func PostUpdateChannelPurposeMessage(userId string, channelId string, teamId str
"new_purpose": newChannelPurpose, "new_purpose": newChannelPurpose,
}, },
} }
if _, err := CreatePost(post, teamId, false, siteURL); err != nil { if _, err := CreatePost(post, teamId, false); err != nil {
return model.NewLocAppError("", "app.channel.post_update_channel_purpose_message.post.error", nil, err.Error()) return model.NewLocAppError("", "app.channel.post_update_channel_purpose_message.post.error", nil, err.Error())
} }
} }
@@ -585,7 +585,7 @@ func PostUpdateChannelPurposeMessage(userId string, channelId string, teamId str
return nil return nil
} }
func PostUpdateChannelDisplayNameMessage(userId string, channelId string, teamId string, oldChannelDisplayName, newChannelDisplayName string, siteURL string) *model.AppError { func PostUpdateChannelDisplayNameMessage(userId string, channelId string, teamId string, oldChannelDisplayName, newChannelDisplayName string) *model.AppError {
uc := Srv.Store.User().Get(userId) uc := Srv.Store.User().Get(userId)
if uresult := <-uc; uresult.Err != nil { if uresult := <-uc; uresult.Err != nil {
@@ -607,7 +607,7 @@ func PostUpdateChannelDisplayNameMessage(userId string, channelId string, teamId
}, },
} }
if _, err := CreatePost(post, teamId, false, siteURL); err != nil { if _, err := CreatePost(post, teamId, false); err != nil {
return model.NewLocAppError("PostUpdateChannelDisplayNameMessage", "api.channel.post_update_channel_displayname_message_and_forget.create_post.error", nil, err.Error()) return model.NewLocAppError("PostUpdateChannelDisplayNameMessage", "api.channel.post_update_channel_displayname_message_and_forget.create_post.error", nil, err.Error())
} }
} }
@@ -754,7 +754,7 @@ func GetChannelUnread(channelId, userId string) (*model.ChannelUnread, *model.Ap
return channelUnread, nil return channelUnread, nil
} }
func JoinChannel(channel *model.Channel, userId string, siteURL string) *model.AppError { func JoinChannel(channel *model.Channel, userId string) *model.AppError {
if channel.DeleteAt > 0 { if channel.DeleteAt > 0 {
return model.NewLocAppError("JoinChannel", "api.channel.join_channel.already_deleted.app_error", nil, "") return model.NewLocAppError("JoinChannel", "api.channel.join_channel.already_deleted.app_error", nil, "")
} }
@@ -775,7 +775,7 @@ func JoinChannel(channel *model.Channel, userId string, siteURL string) *model.A
return err return err
} }
if err := postJoinChannelMessage(user, channel, siteURL); err != nil { if err := postJoinChannelMessage(user, channel); err != nil {
return err return err
} }
} else { } else {
@@ -786,7 +786,7 @@ func JoinChannel(channel *model.Channel, userId string, siteURL string) *model.A
return nil return nil
} }
func postJoinChannelMessage(user *model.User, channel *model.Channel, siteURL string) *model.AppError { func postJoinChannelMessage(user *model.User, channel *model.Channel) *model.AppError {
post := &model.Post{ post := &model.Post{
ChannelId: channel.Id, ChannelId: channel.Id,
Message: fmt.Sprintf(utils.T("api.channel.join_channel.post_and_forget"), user.Username), Message: fmt.Sprintf(utils.T("api.channel.join_channel.post_and_forget"), user.Username),
@@ -797,14 +797,14 @@ func postJoinChannelMessage(user *model.User, channel *model.Channel, siteURL st
}, },
} }
if _, err := CreatePost(post, channel.TeamId, false, siteURL); err != nil { if _, err := CreatePost(post, channel.TeamId, false); err != nil {
return model.NewLocAppError("postJoinChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error()) return model.NewLocAppError("postJoinChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error())
} }
return nil return nil
} }
func LeaveChannel(channelId string, userId string, siteURL string) *model.AppError { func LeaveChannel(channelId string, userId string) *model.AppError {
sc := Srv.Store.Channel().Get(channelId, true) sc := Srv.Store.Channel().Get(channelId, true)
uc := Srv.Store.User().Get(userId) uc := Srv.Store.User().Get(userId)
ccm := Srv.Store.Channel().GetMemberCount(channelId, false) ccm := Srv.Store.Channel().GetMemberCount(channelId, false)
@@ -836,13 +836,13 @@ func LeaveChannel(channelId string, userId string, siteURL string) *model.AppErr
return err return err
} }
go postLeaveChannelMessage(user, channel, siteURL) go postLeaveChannelMessage(user, channel)
} }
return nil return nil
} }
func postLeaveChannelMessage(user *model.User, channel *model.Channel, siteURL string) *model.AppError { func postLeaveChannelMessage(user *model.User, channel *model.Channel) *model.AppError {
post := &model.Post{ post := &model.Post{
ChannelId: channel.Id, ChannelId: channel.Id,
Message: fmt.Sprintf(utils.T("api.channel.leave.left"), user.Username), Message: fmt.Sprintf(utils.T("api.channel.leave.left"), user.Username),
@@ -853,14 +853,14 @@ func postLeaveChannelMessage(user *model.User, channel *model.Channel, siteURL s
}, },
} }
if _, err := CreatePost(post, channel.TeamId, false, siteURL); err != nil { if _, err := CreatePost(post, channel.TeamId, false); err != nil {
return model.NewLocAppError("postLeaveChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error()) return model.NewLocAppError("postLeaveChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error())
} }
return nil return nil
} }
func PostAddToChannelMessage(user *model.User, addedUser *model.User, channel *model.Channel, siteURL string) *model.AppError { func PostAddToChannelMessage(user *model.User, addedUser *model.User, channel *model.Channel) *model.AppError {
post := &model.Post{ post := &model.Post{
ChannelId: channel.Id, ChannelId: channel.Id,
Message: fmt.Sprintf(utils.T("api.channel.add_member.added"), addedUser.Username, user.Username), Message: fmt.Sprintf(utils.T("api.channel.add_member.added"), addedUser.Username, user.Username),
@@ -872,14 +872,14 @@ func PostAddToChannelMessage(user *model.User, addedUser *model.User, channel *m
}, },
} }
if _, err := CreatePost(post, channel.TeamId, false, siteURL); err != nil { if _, err := CreatePost(post, channel.TeamId, false); err != nil {
return model.NewLocAppError("postAddToChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error()) return model.NewLocAppError("postAddToChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error())
} }
return nil return nil
} }
func PostRemoveFromChannelMessage(removerUserId string, removedUser *model.User, channel *model.Channel, siteURL string) *model.AppError { func PostRemoveFromChannelMessage(removerUserId string, removedUser *model.User, channel *model.Channel) *model.AppError {
post := &model.Post{ post := &model.Post{
ChannelId: channel.Id, ChannelId: channel.Id,
Message: fmt.Sprintf(utils.T("api.channel.remove_member.removed"), removedUser.Username), Message: fmt.Sprintf(utils.T("api.channel.remove_member.removed"), removedUser.Username),
@@ -890,7 +890,7 @@ func PostRemoveFromChannelMessage(removerUserId string, removedUser *model.User,
}, },
} }
if _, err := CreatePost(post, channel.TeamId, false, siteURL); err != nil { if _, err := CreatePost(post, channel.TeamId, false); err != nil {
return model.NewLocAppError("postRemoveFromChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error()) return model.NewLocAppError("postRemoveFromChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error())
} }
@@ -929,7 +929,7 @@ func removeUserFromChannel(userIdToRemove string, removerUserId string, channel
return nil return nil
} }
func RemoveUserFromChannel(userIdToRemove string, removerUserId string, channel *model.Channel, siteURL string) *model.AppError { func RemoveUserFromChannel(userIdToRemove string, removerUserId string, channel *model.Channel) *model.AppError {
var err *model.AppError var err *model.AppError
if err = removeUserFromChannel(userIdToRemove, removerUserId, channel); err != nil { if err = removeUserFromChannel(userIdToRemove, removerUserId, channel); err != nil {
return err return err
@@ -940,7 +940,7 @@ func RemoveUserFromChannel(userIdToRemove string, removerUserId string, channel
return err return err
} }
go PostRemoveFromChannelMessage(removerUserId, user, channel, siteURL) go PostRemoveFromChannelMessage(removerUserId, user, channel)
return nil return nil
} }

Просмотреть файл

@@ -38,7 +38,7 @@ func GetCommandProvider(name string) CommandProvider {
return nil return nil
} }
func CreateCommandPost(post *model.Post, teamId string, response *model.CommandResponse, siteURL string) (*model.Post, *model.AppError) { func CreateCommandPost(post *model.Post, teamId string, response *model.CommandResponse) (*model.Post, *model.AppError) {
post.Message = parseSlackLinksToMarkdown(response.Text) post.Message = parseSlackLinksToMarkdown(response.Text)
post.CreateAt = model.GetMillis() post.CreateAt = model.GetMillis()
@@ -48,7 +48,7 @@ func CreateCommandPost(post *model.Post, teamId string, response *model.CommandR
switch response.ResponseType { switch response.ResponseType {
case model.COMMAND_RESPONSE_TYPE_IN_CHANNEL: case model.COMMAND_RESPONSE_TYPE_IN_CHANNEL:
return CreatePost(post, teamId, true, siteURL) return CreatePost(post, teamId, true)
case model.COMMAND_RESPONSE_TYPE_EPHEMERAL: case model.COMMAND_RESPONSE_TYPE_EPHEMERAL:
if response.Text == "" { if response.Text == "" {
return post, nil return post, nil
@@ -268,7 +268,7 @@ func HandleCommandResponse(command *model.Command, args *model.CommandArgs, resp
} }
} }
if _, err := CreateCommandPost(post, args.TeamId, response, args.SiteURL); err != nil { if _, err := CreateCommandPost(post, args.TeamId, response); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }

Просмотреть файл

@@ -88,7 +88,7 @@ func (me *EchoProvider) DoCommand(args *model.CommandArgs, message string) *mode
time.Sleep(time.Duration(delay) * time.Second) time.Sleep(time.Duration(delay) * time.Second)
if _, err := CreatePost(post, args.TeamId, true, args.SiteURL); err != nil { if _, err := CreatePost(post, args.TeamId, true); err != nil {
l4g.Error(args.T("api.command_echo.create.app_error"), err) l4g.Error(args.T("api.command_echo.create.app_error"), err)
} }
}() }()

Просмотреть файл

@@ -55,7 +55,7 @@ func (me *InvitePeopleProvider) DoCommand(args *model.CommandArgs, message strin
return &model.CommandResponse{ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL, Text: args.T("api.command.invite_people.no_email")} return &model.CommandResponse{ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL, Text: args.T("api.command.invite_people.no_email")}
} }
if err := InviteNewUsersToTeam(emailList, args.TeamId, args.UserId, args.SiteURL); err != nil { if err := InviteNewUsersToTeam(emailList, args.TeamId, args.UserId); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
return &model.CommandResponse{ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL, Text: args.T("api.command.invite_people.fail")} return &model.CommandResponse{ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL, Text: args.T("api.command.invite_people.fail")}
} }

Просмотреть файл

@@ -45,7 +45,7 @@ func (me *JoinProvider) DoCommand(args *model.CommandArgs, message string) *mode
return &model.CommandResponse{Text: args.T("api.command_join.fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL} return &model.CommandResponse{Text: args.T("api.command_join.fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
} }
if err := JoinChannel(channel, args.UserId, args.SiteURL); err != nil { if err := JoinChannel(channel, args.UserId); err != nil {
return &model.CommandResponse{Text: args.T("api.command_join.fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL} return &model.CommandResponse{Text: args.T("api.command_join.fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
} }

Просмотреть файл

@@ -357,7 +357,7 @@ func (me *LoadTestProvider) UrlCommand(args *model.CommandArgs, message string)
post.ChannelId = args.ChannelId post.ChannelId = args.ChannelId
post.UserId = args.UserId post.UserId = args.UserId
if _, err := CreatePost(post, args.TeamId, false, args.SiteURL); err != nil { if _, err := CreatePost(post, args.TeamId, false); err != nil {
return &model.CommandResponse{Text: "Unable to create post", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL} return &model.CommandResponse{Text: "Unable to create post", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
} }
} }
@@ -396,7 +396,7 @@ func (me *LoadTestProvider) JsonCommand(args *model.CommandArgs, message string)
post.Message = message post.Message = message
} }
if _, err := CreatePost(post, args.TeamId, false, args.SiteURL); err != nil { if _, err := CreatePost(post, args.TeamId, false); err != nil {
return &model.CommandResponse{Text: "Unable to create post", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL} return &model.CommandResponse{Text: "Unable to create post", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
} }
return &model.CommandResponse{Text: "Loaded data", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL} return &model.CommandResponse{Text: "Loaded data", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}

Просмотреть файл

@@ -89,7 +89,7 @@ func (me *msgProvider) DoCommand(args *model.CommandArgs, message string) *model
post.Message = parsedMessage post.Message = parsedMessage
post.ChannelId = targetChannelId post.ChannelId = targetChannelId
post.UserId = args.UserId post.UserId = args.UserId
if _, err := CreatePost(post, args.TeamId, true, args.SiteURL); err != nil { if _, err := CreatePost(post, args.TeamId, true); err != nil {
return &model.CommandResponse{Text: args.T("api.command_msg.fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL} return &model.CommandResponse{Text: args.T("api.command_msg.fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
} }
} }

Просмотреть файл

@@ -415,7 +415,7 @@ func ImportUser(data *UserImportData, dryRun bool) *model.AppError {
return err return err
} }
} else { } else {
if _, err := UpdateUser(user, utils.GetSiteURL(), false); err != nil { if _, err := UpdateUser(user, false); err != nil {
return err return err
} }
if _, err := UpdateUserRoles(user.Id, roles); err != nil { if _, err := UpdateUserRoles(user.Id, roles); err != nil {
@@ -865,7 +865,7 @@ func OldImportUser(team *model.Team, user *model.User) *model.User {
l4g.Error(utils.T("api.import.import_user.set_email.error"), cresult.Err) l4g.Error(utils.T("api.import.import_user.set_email.error"), cresult.Err)
} }
if err := JoinUserToTeam(team, user, utils.GetSiteURL()); err != nil { if err := JoinUserToTeam(team, user); err != nil {
l4g.Error(utils.T("api.import.import_user.join_team.error"), err) l4g.Error(utils.T("api.import.import_user.join_team.error"), err)
} }

Просмотреть файл

@@ -24,7 +24,7 @@ import (
"github.com/nicksnyder/go-i18n/i18n" "github.com/nicksnyder/go-i18n/i18n"
) )
func SendNotifications(post *model.Post, team *model.Team, channel *model.Channel, sender *model.User, siteURL string) ([]string, *model.AppError) { func SendNotifications(post *model.Post, team *model.Team, channel *model.Channel, sender *model.User) ([]string, *model.AppError) {
pchan := Srv.Store.User().GetAllProfilesInChannel(channel.Id, true) pchan := Srv.Store.User().GetAllProfilesInChannel(channel.Id, true)
cmnchan := Srv.Store.Channel().GetAllChannelMembersNotifyPropsForChannel(channel.Id, true) cmnchan := Srv.Store.Channel().GetAllChannelMembersNotifyPropsForChannel(channel.Id, true)
var fchan store.StoreChannel var fchan store.StoreChannel
@@ -171,7 +171,7 @@ func SendNotifications(post *model.Post, team *model.Team, channel *model.Channe
} }
if userAllowsEmails && status.Status != model.STATUS_ONLINE && profileMap[id].DeleteAt == 0 { if userAllowsEmails && status.Status != model.STATUS_ONLINE && profileMap[id].DeleteAt == 0 {
sendNotificationEmail(post, profileMap[id], channel, team, senderName, sender, siteURL) sendNotificationEmail(post, profileMap[id], channel, team, senderName, sender)
} }
} }
} }
@@ -317,7 +317,7 @@ func SendNotifications(post *model.Post, team *model.Team, channel *model.Channe
return mentionedUsersList, nil return mentionedUsersList, nil
} }
func sendNotificationEmail(post *model.Post, user *model.User, channel *model.Channel, team *model.Team, senderName string, sender *model.User, siteURL string) *model.AppError { func sendNotificationEmail(post *model.Post, user *model.User, channel *model.Channel, team *model.Team, senderName string, sender *model.User) *model.AppError {
if channel.IsGroupOrDirect() { if channel.IsGroupOrDirect() {
if result := <-Srv.Store.Team().GetTeamsByUserId(user.Id); result.Err != nil { if result := <-Srv.Store.Team().GetTeamsByUserId(user.Id); result.Err != nil {
return result.Err return result.Err
@@ -367,7 +367,7 @@ func sendNotificationEmail(post *model.Post, user *model.User, channel *model.Ch
var mailTemplate string var mailTemplate string
var mailParameters map[string]interface{} var mailParameters map[string]interface{}
teamURL := siteURL + "/" + team.Name teamURL := utils.GetSiteURL() + "/" + team.Name
tm := time.Unix(post.CreateAt/1000, 0) tm := time.Unix(post.CreateAt/1000, 0)
userLocale := utils.GetUserTranslations(user.Locale) userLocale := utils.GetUserTranslations(user.Locale)
@@ -405,7 +405,7 @@ func sendNotificationEmail(post *model.Post, user *model.User, channel *model.Ch
subject := fmt.Sprintf("[%v] %v", utils.Cfg.TeamSettings.SiteName, userLocale(mailTemplate, mailParameters)) subject := fmt.Sprintf("[%v] %v", utils.Cfg.TeamSettings.SiteName, userLocale(mailTemplate, mailParameters))
bodyPage := utils.NewHTMLTemplate("post_body", user.Locale) bodyPage := utils.NewHTMLTemplate("post_body", user.Locale)
bodyPage.Props["SiteURL"] = siteURL bodyPage.Props["SiteURL"] = utils.GetSiteURL()
bodyPage.Props["PostMessage"] = GetMessageForNotification(post, userLocale) bodyPage.Props["PostMessage"] = GetMessageForNotification(post, userLocale)
if team.Name != "select_team" { if team.Name != "select_team" {
bodyPage.Props["TeamLink"] = teamURL + "/pl/" + post.Id bodyPage.Props["TeamLink"] = teamURL + "/pl/" + post.Id

Просмотреть файл

@@ -7,7 +7,6 @@ import (
"testing" "testing"
"github.com/mattermost/platform/model" "github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
) )
func TestSendNotifications(t *testing.T) { func TestSendNotifications(t *testing.T) {
@@ -19,13 +18,13 @@ func TestSendNotifications(t *testing.T) {
UserId: th.BasicUser.Id, UserId: th.BasicUser.Id,
ChannelId: th.BasicChannel.Id, ChannelId: th.BasicChannel.Id,
Message: "@" + th.BasicUser2.Username, Message: "@" + th.BasicUser2.Username,
}, th.BasicTeam.Id, true, utils.GetSiteURL()) }, th.BasicTeam.Id, true)
if postErr != nil { if postErr != nil {
t.Fatal(postErr) t.Fatal(postErr)
} }
mentions, err := SendNotifications(post1, th.BasicTeam, th.BasicChannel, th.BasicUser, utils.GetSiteURL()) mentions, err := SendNotifications(post1, th.BasicTeam, th.BasicChannel, th.BasicUser)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} else if mentions == nil { } else if mentions == nil {

Просмотреть файл

@@ -49,7 +49,7 @@ func init() {
} }
} }
func CreatePostAsUser(post *model.Post, siteURL string) (*model.Post, *model.AppError) { func CreatePostAsUser(post *model.Post) (*model.Post, *model.AppError) {
// Check that channel has not been deleted // Check that channel has not been deleted
var channel *model.Channel var channel *model.Channel
if result := <-Srv.Store.Channel().Get(post.ChannelId, true); result.Err != nil { if result := <-Srv.Store.Channel().Get(post.ChannelId, true); result.Err != nil {
@@ -66,7 +66,7 @@ func CreatePostAsUser(post *model.Post, siteURL string) (*model.Post, *model.App
return nil, err return nil, err
} }
if rp, err := CreatePost(post, channel.TeamId, true, siteURL); err != nil { if rp, err := CreatePost(post, channel.TeamId, true); err != nil {
if err.Id == "api.post.create_post.root_id.app_error" || if err.Id == "api.post.create_post.root_id.app_error" ||
err.Id == "api.post.create_post.channel_root_id.app_error" || err.Id == "api.post.create_post.channel_root_id.app_error" ||
err.Id == "api.post.create_post.parent_id.app_error" { err.Id == "api.post.create_post.parent_id.app_error" {
@@ -87,7 +87,7 @@ func CreatePostAsUser(post *model.Post, siteURL string) (*model.Post, *model.App
} }
func CreatePost(post *model.Post, teamId string, triggerWebhooks bool, siteURL string) (*model.Post, *model.AppError) { func CreatePost(post *model.Post, teamId string, triggerWebhooks bool) (*model.Post, *model.AppError) {
var pchan store.StoreChannel var pchan store.StoreChannel
if len(post.RootId) > 0 { if len(post.RootId) > 0 {
pchan = Srv.Store.Post().Get(post.RootId) pchan = Srv.Store.Post().Get(post.RootId)
@@ -144,14 +144,14 @@ func CreatePost(post *model.Post, teamId string, triggerWebhooks bool, siteURL s
} }
} }
if err := handlePostEvents(rpost, teamId, triggerWebhooks, siteURL); err != nil { if err := handlePostEvents(rpost, teamId, triggerWebhooks); err != nil {
return nil, err return nil, err
} }
return rpost, nil return rpost, nil
} }
func handlePostEvents(post *model.Post, teamId string, triggerWebhooks bool, siteURL string) *model.AppError { func handlePostEvents(post *model.Post, teamId string, triggerWebhooks bool) *model.AppError {
var tchan store.StoreChannel var tchan store.StoreChannel
if len(teamId) > 0 { if len(teamId) > 0 {
tchan = Srv.Store.Team().Get(teamId) tchan = Srv.Store.Team().Get(teamId)
@@ -188,13 +188,13 @@ func handlePostEvents(post *model.Post, teamId string, triggerWebhooks bool, sit
user = result.Data.(*model.User) user = result.Data.(*model.User)
} }
if _, err := SendNotifications(post, team, channel, user, siteURL); err != nil { if _, err := SendNotifications(post, team, channel, user); err != nil {
return err return err
} }
if triggerWebhooks { if triggerWebhooks {
go func() { go func() {
if err := handleWebhookEvents(post, team, channel, user, siteURL); err != nil { if err := handleWebhookEvents(post, team, channel, user); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
}() }()
@@ -405,7 +405,7 @@ func GetFlaggedPostsForTeam(userId, teamId string, offset int, limit int) (*mode
} }
} }
func GetPermalinkPost(postId string, userId string, siteURL string) (*model.PostList, *model.AppError) { func GetPermalinkPost(postId string, userId string) (*model.PostList, *model.AppError) {
if result := <-Srv.Store.Post().Get(postId); result.Err != nil { if result := <-Srv.Store.Post().Get(postId); result.Err != nil {
return nil, result.Err return nil, result.Err
} else { } else {
@@ -422,7 +422,7 @@ func GetPermalinkPost(postId string, userId string, siteURL string) (*model.Post
return nil, err return nil, err
} }
if err = JoinChannel(channel, userId, siteURL); err != nil { if err = JoinChannel(channel, userId); err != nil {
return nil, err return nil, err
} }

Просмотреть файл

@@ -160,7 +160,7 @@ func SlackAddUsers(teamId string, slackusers []SlackUser, log *bytes.Buffer) map
if result := <-Srv.Store.User().GetByEmail(email); result.Err == nil { if result := <-Srv.Store.User().GetByEmail(email); result.Err == nil {
existingUser := result.Data.(*model.User) existingUser := result.Data.(*model.User)
addedUsers[sUser.Id] = existingUser addedUsers[sUser.Id] = existingUser
if err := JoinUserToTeam(team, addedUsers[sUser.Id], utils.GetSiteURL()); err != nil { if err := JoinUserToTeam(team, addedUsers[sUser.Id]); err != nil {
log.WriteString(utils.T("api.slackimport.slack_add_users.merge_existing_failed", map[string]interface{}{"Email": existingUser.Email, "Username": existingUser.Username})) log.WriteString(utils.T("api.slackimport.slack_add_users.merge_existing_failed", map[string]interface{}{"Email": existingUser.Email, "Username": existingUser.Username}))
} else { } else {
log.WriteString(utils.T("api.slackimport.slack_add_users.merge_existing", map[string]interface{}{"Email": existingUser.Email, "Username": existingUser.Username})) log.WriteString(utils.T("api.slackimport.slack_add_users.merge_existing", map[string]interface{}{"Email": existingUser.Email, "Username": existingUser.Username}))

Просмотреть файл

@@ -29,7 +29,7 @@ func CreateTeam(team *model.Team) (*model.Team, *model.AppError) {
} }
} }
func CreateTeamWithUser(team *model.Team, userId string, siteURL string) (*model.Team, *model.AppError) { func CreateTeamWithUser(team *model.Team, userId string) (*model.Team, *model.AppError) {
var user *model.User var user *model.User
var err *model.AppError var err *model.AppError
if user, err = GetUser(userId); err != nil { if user, err = GetUser(userId); err != nil {
@@ -47,7 +47,7 @@ func CreateTeamWithUser(team *model.Team, userId string, siteURL string) (*model
return nil, err return nil, err
} }
if err = JoinUserToTeam(rteam, user, siteURL); err != nil { if err = JoinUserToTeam(rteam, user); err != nil {
return nil, err return nil, err
} }
@@ -161,7 +161,7 @@ func UpdateTeamMemberRoles(teamId string, userId string, newRoles string) (*mode
return member, nil return member, nil
} }
func AddUserToTeam(teamId string, userId string, siteURL string) (*model.Team, *model.AppError) { func AddUserToTeam(teamId string, userId string) (*model.Team, *model.AppError) {
tchan := Srv.Store.Team().Get(teamId) tchan := Srv.Store.Team().Get(teamId)
uchan := Srv.Store.User().Get(userId) uchan := Srv.Store.User().Get(userId)
@@ -179,22 +179,22 @@ func AddUserToTeam(teamId string, userId string, siteURL string) (*model.Team, *
user = result.Data.(*model.User) user = result.Data.(*model.User)
} }
if err := JoinUserToTeam(team, user, siteURL); err != nil { if err := JoinUserToTeam(team, user); err != nil {
return nil, err return nil, err
} }
return team, nil return team, nil
} }
func AddUserToTeamByTeamId(teamId string, user *model.User, siteURL string) *model.AppError { func AddUserToTeamByTeamId(teamId string, user *model.User) *model.AppError {
if result := <-Srv.Store.Team().Get(teamId); result.Err != nil { if result := <-Srv.Store.Team().Get(teamId); result.Err != nil {
return result.Err return result.Err
} else { } else {
return JoinUserToTeam(result.Data.(*model.Team), user, siteURL) return JoinUserToTeam(result.Data.(*model.Team), user)
} }
} }
func AddUserToTeamByHash(userId string, hash string, data string, siteURL string) (*model.Team, *model.AppError) { func AddUserToTeamByHash(userId string, hash string, data string) (*model.Team, *model.AppError) {
props := model.MapFromJson(strings.NewReader(data)) props := model.MapFromJson(strings.NewReader(data))
if !model.ComparePassword(hash, fmt.Sprintf("%v:%v", data, utils.Cfg.EmailSettings.InviteSalt)) { if !model.ComparePassword(hash, fmt.Sprintf("%v:%v", data, utils.Cfg.EmailSettings.InviteSalt)) {
@@ -223,14 +223,14 @@ func AddUserToTeamByHash(userId string, hash string, data string, siteURL string
user = result.Data.(*model.User) user = result.Data.(*model.User)
} }
if err := JoinUserToTeam(team, user, siteURL); err != nil { if err := JoinUserToTeam(team, user); err != nil {
return nil, err return nil, err
} }
return team, nil return team, nil
} }
func AddUserToTeamByInviteId(inviteId string, userId string, siteURL string) (*model.Team, *model.AppError) { func AddUserToTeamByInviteId(inviteId string, userId string) (*model.Team, *model.AppError) {
tchan := Srv.Store.Team().GetByInviteId(inviteId) tchan := Srv.Store.Team().GetByInviteId(inviteId)
uchan := Srv.Store.User().Get(userId) uchan := Srv.Store.User().Get(userId)
@@ -248,7 +248,7 @@ func AddUserToTeamByInviteId(inviteId string, userId string, siteURL string) (*m
user = result.Data.(*model.User) user = result.Data.(*model.User)
} }
if err := JoinUserToTeam(team, user, siteURL); err != nil { if err := JoinUserToTeam(team, user); err != nil {
return nil, err return nil, err
} }
@@ -293,7 +293,7 @@ func joinUserToTeam(team *model.Team, user *model.User) (bool, *model.AppError)
return false, nil return false, nil
} }
func JoinUserToTeam(team *model.Team, user *model.User, siteURL string) *model.AppError { func JoinUserToTeam(team *model.Team, user *model.User) *model.AppError {
if alreadyAdded, err := joinUserToTeam(team, user); err != nil { if alreadyAdded, err := joinUserToTeam(team, user); err != nil {
return err return err
@@ -308,7 +308,7 @@ func JoinUserToTeam(team *model.Team, user *model.User, siteURL string) *model.A
} }
// Soft error if there is an issue joining the default channels // Soft error if there is an issue joining the default channels
if err := JoinDefaultChannels(team.Id, user, channelRole, siteURL); err != nil { if err := JoinDefaultChannels(team.Id, user, channelRole); err != nil {
l4g.Error(utils.T("api.user.create_user.joining.error"), user.Id, team.Id, err) l4g.Error(utils.T("api.user.create_user.joining.error"), user.Id, team.Id, err)
} }
@@ -431,8 +431,8 @@ func GetTeamMembersByIds(teamId string, userIds []string) ([]*model.TeamMember,
} }
} }
func AddTeamMember(teamId, userId, siteURL string) (*model.TeamMember, *model.AppError) { func AddTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError) {
if _, err := AddUserToTeam(teamId, userId, siteURL); err != nil { if _, err := AddUserToTeam(teamId, userId); err != nil {
return nil, err return nil, err
} }
@@ -450,11 +450,11 @@ func AddTeamMember(teamId, userId, siteURL string) (*model.TeamMember, *model.Ap
return teamMember, nil return teamMember, nil
} }
func AddTeamMembers(teamId string, userIds []string, siteURL string) ([]*model.TeamMember, *model.AppError) { func AddTeamMembers(teamId string, userIds []string) ([]*model.TeamMember, *model.AppError) {
var members []*model.TeamMember var members []*model.TeamMember
for _, userId := range userIds { for _, userId := range userIds {
if _, err := AddUserToTeam(teamId, userId, siteURL); err != nil { if _, err := AddUserToTeam(teamId, userId); err != nil {
return nil, err return nil, err
} }
@@ -473,11 +473,11 @@ func AddTeamMembers(teamId string, userIds []string, siteURL string) ([]*model.T
return members, nil return members, nil
} }
func AddTeamMemberByHash(userId, hash, data, siteURL string) (*model.TeamMember, *model.AppError) { func AddTeamMemberByHash(userId, hash, data string) (*model.TeamMember, *model.AppError) {
var team *model.Team var team *model.Team
var err *model.AppError var err *model.AppError
if team, err = AddUserToTeamByHash(userId, hash, data, siteURL); err != nil { if team, err = AddUserToTeamByHash(userId, hash, data); err != nil {
return nil, err return nil, err
} }
@@ -488,11 +488,11 @@ func AddTeamMemberByHash(userId, hash, data, siteURL string) (*model.TeamMember,
} }
} }
func AddTeamMemberByInviteId(inviteId, userId, siteURL string) (*model.TeamMember, *model.AppError) { func AddTeamMemberByInviteId(inviteId, userId string) (*model.TeamMember, *model.AppError) {
var team *model.Team var team *model.Team
var err *model.AppError var err *model.AppError
if team, err = AddUserToTeamByInviteId(inviteId, userId, siteURL); err != nil { if team, err = AddUserToTeamByInviteId(inviteId, userId); err != nil {
return nil, err return nil, err
} }
@@ -610,7 +610,7 @@ func LeaveTeam(team *model.Team, user *model.User) *model.AppError {
return nil return nil
} }
func InviteNewUsersToTeam(emailList []string, teamId, senderId, siteURL string) *model.AppError { func InviteNewUsersToTeam(emailList []string, teamId, senderId string) *model.AppError {
if len(emailList) == 0 { if len(emailList) == 0 {
err := model.NewLocAppError("InviteNewUsersToTeam", "api.team.invite_members.no_one.app_error", nil, "") err := model.NewLocAppError("InviteNewUsersToTeam", "api.team.invite_members.no_one.app_error", nil, "")
err.StatusCode = http.StatusBadRequest err.StatusCode = http.StatusBadRequest
@@ -634,7 +634,7 @@ func InviteNewUsersToTeam(emailList []string, teamId, senderId, siteURL string)
user = result.Data.(*model.User) user = result.Data.(*model.User)
} }
SendInviteEmails(team, user.GetDisplayName(), emailList, siteURL) SendInviteEmails(team, user.GetDisplayName(), emailList, utils.GetSiteURL())
return nil return nil
} }

Просмотреть файл

@@ -8,7 +8,6 @@ import (
"testing" "testing"
"github.com/mattermost/platform/model" "github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
) )
func TestCreateTeam(t *testing.T) { func TestCreateTeam(t *testing.T) {
@@ -43,12 +42,12 @@ func TestCreateTeamWithUser(t *testing.T) {
Type: model.TEAM_OPEN, Type: model.TEAM_OPEN,
} }
if _, err := CreateTeamWithUser(team, th.BasicUser.Id, utils.GetSiteURL()); err != nil { if _, err := CreateTeamWithUser(team, th.BasicUser.Id); err != nil {
t.Log(err) t.Log(err)
t.Fatal("Should create a new team with existing user") t.Fatal("Should create a new team with existing user")
} }
if _, err := CreateTeamWithUser(team, model.NewId(), utils.GetSiteURL()); err == nil { if _, err := CreateTeamWithUser(team, model.NewId()); err == nil {
t.Fatal("Should not create a new team - user does not exist") t.Fatal("Should not create a new team - user does not exist")
} }
@@ -64,7 +63,7 @@ func TestCreateTeamWithUser(t *testing.T) {
} }
//Fail to create a team with user when user has set email without domain //Fail to create a team with user when user has set email without domain
if _, err := CreateTeamWithUser(team2, ruser.Id, utils.GetSiteURL()); err == nil { if _, err := CreateTeamWithUser(team2, ruser.Id); err == nil {
t.Log(err.Message) t.Log(err.Message)
t.Fatal("Should not create a team with user when user has set email without domain") t.Fatal("Should not create a team with user when user has set email without domain")
} else { } else {
@@ -96,7 +95,7 @@ func TestAddUserToTeam(t *testing.T) {
user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@example.com", Nickname: "Darth Vader", Username: "vader" + model.NewId(), Password: "passwd1", AuthService: ""} user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@example.com", Nickname: "Darth Vader", Username: "vader" + model.NewId(), Password: "passwd1", AuthService: ""}
ruser, _ := CreateUser(&user) ruser, _ := CreateUser(&user)
if _, err := AddUserToTeam(th.BasicTeam.Id, ruser.Id, utils.GetSiteURL()); err != nil { if _, err := AddUserToTeam(th.BasicTeam.Id, ruser.Id); err != nil {
t.Log(err) t.Log(err)
t.Fatal("Should add user to the team") t.Fatal("Should add user to the team")
} }
@@ -108,7 +107,7 @@ func TestAddUserToTeamByTeamId(t *testing.T) {
user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@example.com", Nickname: "Darth Vader", Username: "vader" + model.NewId(), Password: "passwd1", AuthService: ""} user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@example.com", Nickname: "Darth Vader", Username: "vader" + model.NewId(), Password: "passwd1", AuthService: ""}
ruser, _ := CreateUser(&user) ruser, _ := CreateUser(&user)
if err := AddUserToTeamByTeamId(th.BasicTeam.Id, ruser, utils.GetSiteURL()); err != nil { if err := AddUserToTeamByTeamId(th.BasicTeam.Id, ruser); err != nil {
t.Log(err) t.Log(err)
t.Fatal("Should add user to the team") t.Fatal("Should add user to the team")
} }

Просмотреть файл

@@ -30,7 +30,7 @@ import (
"github.com/mattermost/platform/utils" "github.com/mattermost/platform/utils"
) )
func CreateUserWithHash(user *model.User, hash string, data string, siteURL string) (*model.User, *model.AppError) { func CreateUserWithHash(user *model.User, hash string, data string) (*model.User, *model.AppError) {
if err := IsUserSignUpAllowed(); err != nil { if err := IsUserSignUpAllowed(); err != nil {
return nil, err return nil, err
} }
@@ -63,7 +63,7 @@ func CreateUserWithHash(user *model.User, hash string, data string, siteURL stri
return nil, err return nil, err
} }
if err := JoinUserToTeam(team, ruser, siteURL); err != nil { if err := JoinUserToTeam(team, ruser); err != nil {
return nil, err return nil, err
} }
@@ -72,7 +72,7 @@ func CreateUserWithHash(user *model.User, hash string, data string, siteURL stri
return ruser, nil return ruser, nil
} }
func CreateUserWithInviteId(user *model.User, inviteId string, siteURL string) (*model.User, *model.AppError) { func CreateUserWithInviteId(user *model.User, inviteId string) (*model.User, *model.AppError) {
if err := IsUserSignUpAllowed(); err != nil { if err := IsUserSignUpAllowed(); err != nil {
return nil, err return nil, err
} }
@@ -92,33 +92,33 @@ func CreateUserWithInviteId(user *model.User, inviteId string, siteURL string) (
return nil, err return nil, err
} }
if err := JoinUserToTeam(team, ruser, siteURL); err != nil { if err := JoinUserToTeam(team, ruser); err != nil {
return nil, err return nil, err
} }
AddDirectChannels(team.Id, ruser) AddDirectChannels(team.Id, ruser)
if err := SendWelcomeEmail(ruser.Id, ruser.Email, ruser.EmailVerified, ruser.Locale, siteURL); err != nil { if err := SendWelcomeEmail(ruser.Id, ruser.Email, ruser.EmailVerified, ruser.Locale, utils.GetSiteURL()); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
return ruser, nil return ruser, nil
} }
func CreateUserAsAdmin(user *model.User, siteURL string) (*model.User, *model.AppError) { func CreateUserAsAdmin(user *model.User) (*model.User, *model.AppError) {
ruser, err := CreateUser(user) ruser, err := CreateUser(user)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if err := SendWelcomeEmail(ruser.Id, ruser.Email, ruser.EmailVerified, ruser.Locale, siteURL); err != nil { if err := SendWelcomeEmail(ruser.Id, ruser.Email, ruser.EmailVerified, ruser.Locale, utils.GetSiteURL()); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
return ruser, nil return ruser, nil
} }
func CreateUserFromSignup(user *model.User, siteURL string) (*model.User, *model.AppError) { func CreateUserFromSignup(user *model.User) (*model.User, *model.AppError) {
if err := IsUserSignUpAllowed(); err != nil { if err := IsUserSignUpAllowed(); err != nil {
return nil, err return nil, err
} }
@@ -136,7 +136,7 @@ func CreateUserFromSignup(user *model.User, siteURL string) (*model.User, *model
return nil, err return nil, err
} }
if err := SendWelcomeEmail(ruser.Id, ruser.Email, ruser.EmailVerified, ruser.Locale, siteURL); err != nil { if err := SendWelcomeEmail(ruser.Id, ruser.Email, ruser.EmailVerified, ruser.Locale, utils.GetSiteURL()); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
@@ -230,7 +230,7 @@ func createUser(user *model.User) (*model.User, *model.AppError) {
} }
} }
func CreateOAuthUser(service string, userData io.Reader, teamId string, siteURL string) (*model.User, *model.AppError) { func CreateOAuthUser(service string, userData io.Reader, teamId string) (*model.User, *model.AppError) {
if !utils.Cfg.TeamSettings.EnableUserCreation { if !utils.Cfg.TeamSettings.EnableUserCreation {
return nil, model.NewAppError("CreateOAuthUser", "api.user.create_user.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("CreateOAuthUser", "api.user.create_user.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
@@ -282,7 +282,7 @@ func CreateOAuthUser(service string, userData io.Reader, teamId string, siteURL
} }
if len(teamId) > 0 { if len(teamId) > 0 {
err = AddUserToTeamByTeamId(teamId, user, siteURL) err = AddUserToTeamByTeamId(teamId, user)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -841,7 +841,7 @@ func SetProfileImage(userId string, imageData *multipart.FileHeader) *model.AppE
return nil return nil
} }
func UpdatePasswordAsUser(userId, currentPassword, newPassword, siteURL string) *model.AppError { func UpdatePasswordAsUser(userId, currentPassword, newPassword string) *model.AppError {
var user *model.User var user *model.User
var err *model.AppError var err *model.AppError
@@ -868,7 +868,7 @@ func UpdatePasswordAsUser(userId, currentPassword, newPassword, siteURL string)
T := utils.GetUserTranslations(user.Locale) T := utils.GetUserTranslations(user.Locale)
if err := UpdatePasswordSendEmail(user, newPassword, T("api.user.update_password.menu"), siteURL); err != nil { if err := UpdatePasswordSendEmail(user, newPassword, T("api.user.update_password.menu")); err != nil {
return err return err
} }
@@ -934,8 +934,8 @@ func SanitizeProfile(user *model.User, asAdmin bool) {
user.SanitizeProfile(options) user.SanitizeProfile(options)
} }
func UpdateUserAsUser(user *model.User, siteURL string, asAdmin bool) (*model.User, *model.AppError) { func UpdateUserAsUser(user *model.User, asAdmin bool) (*model.User, *model.AppError) {
updatedUser, err := UpdateUser(user, siteURL, true) updatedUser, err := UpdateUser(user, true)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -947,7 +947,7 @@ func UpdateUserAsUser(user *model.User, siteURL string, asAdmin bool) (*model.Us
return updatedUser, nil return updatedUser, nil
} }
func PatchUser(userId string, patch *model.UserPatch, siteURL string, asAdmin bool) (*model.User, *model.AppError) { func PatchUser(userId string, patch *model.UserPatch, asAdmin bool) (*model.User, *model.AppError) {
user, err := GetUser(userId) user, err := GetUser(userId)
if err != nil { if err != nil {
return nil, err return nil, err
@@ -955,7 +955,7 @@ func PatchUser(userId string, patch *model.UserPatch, siteURL string, asAdmin bo
user.Patch(patch) user.Patch(patch)
updatedUser, err := UpdateUser(user, siteURL, true) updatedUser, err := UpdateUser(user, true)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -975,7 +975,7 @@ func sendUpdatedUserEvent(user *model.User) {
go Publish(message) go Publish(message)
} }
func UpdateUser(user *model.User, siteURL string, sendNotifications bool) (*model.User, *model.AppError) { func UpdateUser(user *model.User, sendNotifications bool) (*model.User, *model.AppError) {
if result := <-Srv.Store.User().Update(user, false); result.Err != nil { if result := <-Srv.Store.User().Update(user, false); result.Err != nil {
return nil, result.Err return nil, result.Err
} else { } else {
@@ -984,14 +984,14 @@ func UpdateUser(user *model.User, siteURL string, sendNotifications bool) (*mode
if sendNotifications { if sendNotifications {
if rusers[0].Email != rusers[1].Email { if rusers[0].Email != rusers[1].Email {
go func() { go func() {
if err := SendEmailChangeEmail(rusers[1].Email, rusers[0].Email, rusers[0].Locale, siteURL); err != nil { if err := SendEmailChangeEmail(rusers[1].Email, rusers[0].Email, rusers[0].Locale, utils.GetSiteURL()); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
}() }()
if utils.Cfg.EmailSettings.RequireEmailVerification { if utils.Cfg.EmailSettings.RequireEmailVerification {
go func() { go func() {
if err := SendEmailChangeVerifyEmail(rusers[0].Id, rusers[0].Email, rusers[0].Locale, siteURL); err != nil { if err := SendEmailChangeVerifyEmail(rusers[0].Id, rusers[0].Email, rusers[0].Locale, utils.GetSiteURL()); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
}() }()
@@ -1000,7 +1000,7 @@ func UpdateUser(user *model.User, siteURL string, sendNotifications bool) (*mode
if rusers[0].Username != rusers[1].Username { if rusers[0].Username != rusers[1].Username {
go func() { go func() {
if err := SendChangeUsernameEmail(rusers[1].Username, rusers[0].Username, rusers[0].Email, rusers[0].Locale, siteURL); err != nil { if err := SendChangeUsernameEmail(rusers[1].Username, rusers[0].Username, rusers[0].Email, rusers[0].Locale, utils.GetSiteURL()); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
}() }()
@@ -1013,7 +1013,7 @@ func UpdateUser(user *model.User, siteURL string, sendNotifications bool) (*mode
} }
} }
func UpdateUserNotifyProps(userId string, props map[string]string, siteURL string) (*model.User, *model.AppError) { func UpdateUserNotifyProps(userId string, props map[string]string) (*model.User, *model.AppError) {
var user *model.User var user *model.User
var err *model.AppError var err *model.AppError
if user, err = GetUser(userId); err != nil { if user, err = GetUser(userId); err != nil {
@@ -1023,14 +1023,14 @@ func UpdateUserNotifyProps(userId string, props map[string]string, siteURL strin
user.NotifyProps = props user.NotifyProps = props
var ruser *model.User var ruser *model.User
if ruser, err = UpdateUser(user, siteURL, true); err != nil { if ruser, err = UpdateUser(user, true); err != nil {
return nil, err return nil, err
} }
return ruser, nil return ruser, nil
} }
func UpdateMfa(activate bool, userId, token, siteUrl string) *model.AppError { func UpdateMfa(activate bool, userId, token string) *model.AppError {
if activate { if activate {
if err := ActivateMfa(userId, token); err != nil { if err := ActivateMfa(userId, token); err != nil {
return err return err
@@ -1050,7 +1050,7 @@ func UpdateMfa(activate bool, userId, token, siteUrl string) *model.AppError {
return return
} }
if err := SendMfaChangeEmail(user.Email, activate, user.Locale, siteUrl); err != nil { if err := SendMfaChangeEmail(user.Email, activate, user.Locale, utils.GetSiteURL()); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
}() }()
@@ -1058,14 +1058,14 @@ func UpdateMfa(activate bool, userId, token, siteUrl string) *model.AppError {
return nil return nil
} }
func UpdatePasswordByUserIdSendEmail(userId, newPassword, method, siteURL string) *model.AppError { func UpdatePasswordByUserIdSendEmail(userId, newPassword, method string) *model.AppError {
var user *model.User var user *model.User
var err *model.AppError var err *model.AppError
if user, err = GetUser(userId); err != nil { if user, err = GetUser(userId); err != nil {
return err return err
} }
return UpdatePasswordSendEmail(user, newPassword, method, siteURL) return UpdatePasswordSendEmail(user, newPassword, method)
} }
func UpdatePassword(user *model.User, newPassword string) *model.AppError { func UpdatePassword(user *model.User, newPassword string) *model.AppError {
@@ -1082,13 +1082,13 @@ func UpdatePassword(user *model.User, newPassword string) *model.AppError {
return nil return nil
} }
func UpdatePasswordSendEmail(user *model.User, newPassword, method, siteURL string) *model.AppError { func UpdatePasswordSendEmail(user *model.User, newPassword, method string) *model.AppError {
if err := UpdatePassword(user, newPassword); err != nil { if err := UpdatePassword(user, newPassword); err != nil {
return err return err
} }
go func() { go func() {
if err := SendPasswordChangeEmail(user.Email, method, user.Locale, siteURL); err != nil { if err := SendPasswordChangeEmail(user.Email, method, user.Locale, utils.GetSiteURL()); err != nil {
l4g.Error(err.Error()) l4g.Error(err.Error())
} }
}() }()
@@ -1096,7 +1096,7 @@ func UpdatePasswordSendEmail(user *model.User, newPassword, method, siteURL stri
return nil return nil
} }
func ResetPasswordFromCode(code, newPassword, siteURL string) *model.AppError { func ResetPasswordFromCode(code, newPassword string) *model.AppError {
var recovery *model.PasswordRecovery var recovery *model.PasswordRecovery
var err *model.AppError var err *model.AppError
if recovery, err = GetPasswordRecovery(code); err != nil { if recovery, err = GetPasswordRecovery(code); err != nil {
@@ -1118,7 +1118,7 @@ func ResetPasswordFromCode(code, newPassword, siteURL string) *model.AppError {
T := utils.GetUserTranslations(user.Locale) T := utils.GetUserTranslations(user.Locale)
if err := UpdatePasswordSendEmail(user, newPassword, T("api.user.reset_password.method"), siteURL); err != nil { if err := UpdatePasswordSendEmail(user, newPassword, T("api.user.reset_password.method")); err != nil {
return err return err
} }
@@ -1427,7 +1427,7 @@ func AutocompleteUsersInTeam(teamId string, term string, searchOptions map[strin
return autocomplete, nil return autocomplete, nil
} }
func UpdateOAuthUserAttrs(userData io.Reader, user *model.User, provider einterfaces.OauthProvider, service string, siteURL string) *model.AppError { func UpdateOAuthUserAttrs(userData io.Reader, user *model.User, provider einterfaces.OauthProvider, service string) *model.AppError {
oauthUser := provider.GetUserFromJson(userData) oauthUser := provider.GetUserFromJson(userData)
if oauthUser == nil { if oauthUser == nil {

Просмотреть файл

@@ -70,7 +70,7 @@ func TestCreateOAuthUser(t *testing.T) {
glUser := oauthgitlab.GitLabUser{Id: int64(r.Intn(1000)), Username: "joram" + model.NewId(), Email: model.NewId() + "@simulator.amazonses.com", Name: "Joram Wilander"} glUser := oauthgitlab.GitLabUser{Id: int64(r.Intn(1000)), Username: "joram" + model.NewId(), Email: model.NewId() + "@simulator.amazonses.com", Name: "Joram Wilander"}
json := glUser.ToJson() json := glUser.ToJson()
user, err := CreateOAuthUser(model.USER_AUTH_SERVICE_GITLAB, strings.NewReader(json), th.BasicTeam.Id, utils.GetSiteURL()) user, err := CreateOAuthUser(model.USER_AUTH_SERVICE_GITLAB, strings.NewReader(json), th.BasicTeam.Id)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -87,7 +87,7 @@ func TestCreateOAuthUser(t *testing.T) {
}() }()
utils.Cfg.TeamSettings.EnableUserCreation = false utils.Cfg.TeamSettings.EnableUserCreation = false
_, err = CreateOAuthUser(model.USER_AUTH_SERVICE_GITLAB, strings.NewReader(json), th.BasicTeam.Id, utils.GetSiteURL()) _, err = CreateOAuthUser(model.USER_AUTH_SERVICE_GITLAB, strings.NewReader(json), th.BasicTeam.Id)
if err == nil { if err == nil {
t.Fatal("should have failed - user creation disabled") t.Fatal("should have failed - user creation disabled")
} }
@@ -138,7 +138,7 @@ func TestUpdateOAuthUserAttrs(t *testing.T) {
data := bytes.NewReader(gitlabUser) data := bytes.NewReader(gitlabUser)
user = getUserFromDB(user.Id, t) user = getUserFromDB(user.Id, t)
UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab", "http://localhost:8065") UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab")
user = getUserFromDB(user.Id, t) user = getUserFromDB(user.Id, t)
if user.Username != gitlabUserObj.Username { if user.Username != gitlabUserObj.Username {
@@ -153,7 +153,7 @@ func TestUpdateOAuthUserAttrs(t *testing.T) {
data := bytes.NewReader(gitlabUser) data := bytes.NewReader(gitlabUser)
user = getUserFromDB(user.Id, t) user = getUserFromDB(user.Id, t)
UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab", "http://localhost:8065") UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab")
user = getUserFromDB(user.Id, t) user = getUserFromDB(user.Id, t)
if user.Username == gitlabUserObj.Username { if user.Username == gitlabUserObj.Username {
@@ -169,7 +169,7 @@ func TestUpdateOAuthUserAttrs(t *testing.T) {
data := bytes.NewReader(gitlabUser) data := bytes.NewReader(gitlabUser)
user = getUserFromDB(user.Id, t) user = getUserFromDB(user.Id, t)
UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab", "http://localhost:8065") UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab")
user = getUserFromDB(user.Id, t) user = getUserFromDB(user.Id, t)
if user.Email != gitlabUserObj.Email { if user.Email != gitlabUserObj.Email {
@@ -188,7 +188,7 @@ func TestUpdateOAuthUserAttrs(t *testing.T) {
data := bytes.NewReader(gitlabUser) data := bytes.NewReader(gitlabUser)
user = getUserFromDB(user.Id, t) user = getUserFromDB(user.Id, t)
UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab", "http://localhost:8065") UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab")
user = getUserFromDB(user.Id, t) user = getUserFromDB(user.Id, t)
if user.Email == gitlabUserObj.Email { if user.Email == gitlabUserObj.Email {
@@ -203,7 +203,7 @@ func TestUpdateOAuthUserAttrs(t *testing.T) {
data := bytes.NewReader(gitlabUser) data := bytes.NewReader(gitlabUser)
user = getUserFromDB(user.Id, t) user = getUserFromDB(user.Id, t)
UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab", "http://localhost:8065") UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab")
user = getUserFromDB(user.Id, t) user = getUserFromDB(user.Id, t)
if user.FirstName != "Updated" { if user.FirstName != "Updated" {
@@ -217,7 +217,7 @@ func TestUpdateOAuthUserAttrs(t *testing.T) {
data := bytes.NewReader(gitlabUser) data := bytes.NewReader(gitlabUser)
user = getUserFromDB(user.Id, t) user = getUserFromDB(user.Id, t)
UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab", "http://localhost:8065") UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab")
user = getUserFromDB(user.Id, t) user = getUserFromDB(user.Id, t)
if user.LastName != "Lastname" { if user.LastName != "Lastname" {
@@ -253,7 +253,7 @@ func createGitlabUser(t *testing.T, email string, username string) (*model.User,
var user *model.User var user *model.User
var err *model.AppError var err *model.AppError
if user, err = CreateOAuthUser("gitlab", bytes.NewReader(gitlabUser), "", utils.GetSiteURL()); err != nil { if user, err = CreateOAuthUser("gitlab", bytes.NewReader(gitlabUser), ""); err != nil {
t.Fatal("unable to create the user") t.Fatal("unable to create the user")
} }

Просмотреть файл

@@ -24,7 +24,7 @@ const (
TRIGGERWORDS_STARTSWITH = 1 TRIGGERWORDS_STARTSWITH = 1
) )
func handleWebhookEvents(post *model.Post, team *model.Team, channel *model.Channel, user *model.User, siteURL string) *model.AppError { func handleWebhookEvents(post *model.Post, team *model.Team, channel *model.Channel, user *model.User) *model.AppError {
if !utils.Cfg.ServiceSettings.EnableOutgoingWebhooks { if !utils.Cfg.ServiceSettings.EnableOutgoingWebhooks {
return nil return nil
} }
@@ -107,7 +107,7 @@ func handleWebhookEvents(post *model.Post, team *model.Team, channel *model.Chan
respProps := model.MapFromJson(resp.Body) respProps := model.MapFromJson(resp.Body)
if text, ok := respProps["text"]; ok { if text, ok := respProps["text"]; ok {
if _, err := CreateWebhookPost(hook.CreatorId, hook.TeamId, post.ChannelId, text, respProps["username"], respProps["icon_url"], post.Props, post.Type, siteURL); err != nil { if _, err := CreateWebhookPost(hook.CreatorId, hook.TeamId, post.ChannelId, text, respProps["username"], respProps["icon_url"], post.Props, post.Type); err != nil {
l4g.Error(utils.T("api.post.handle_webhook_events_and_forget.create_post.error"), err) l4g.Error(utils.T("api.post.handle_webhook_events_and_forget.create_post.error"), err)
} }
} }
@@ -121,7 +121,7 @@ func handleWebhookEvents(post *model.Post, team *model.Team, channel *model.Chan
return nil return nil
} }
func CreateWebhookPost(userId, teamId, channelId, text, overrideUsername, overrideIconUrl string, props model.StringInterface, postType string, siteURL string) (*model.Post, *model.AppError) { func CreateWebhookPost(userId, teamId, channelId, text, overrideUsername, overrideIconUrl string, props model.StringInterface, postType string) (*model.Post, *model.AppError) {
// parse links into Markdown format // parse links into Markdown format
linkWithTextRegex := regexp.MustCompile(`<([^<\|]+)\|([^>]+)>`) linkWithTextRegex := regexp.MustCompile(`<([^<\|]+)\|([^>]+)>`)
text = linkWithTextRegex.ReplaceAllString(text, "[${2}](${1})") text = linkWithTextRegex.ReplaceAllString(text, "[${2}](${1})")
@@ -159,7 +159,7 @@ func CreateWebhookPost(userId, teamId, channelId, text, overrideUsername, overri
} }
} }
if _, err := CreatePost(post, teamId, false, siteURL); err != nil { if _, err := CreatePost(post, teamId, false); err != nil {
return nil, model.NewLocAppError("CreateWebhookPost", "api.post.create_webhook_post.creating.app_error", nil, "err="+err.Message) return nil, model.NewLocAppError("CreateWebhookPost", "api.post.create_webhook_post.creating.app_error", nil, "err="+err.Message)
} }
@@ -423,7 +423,7 @@ func RegenOutgoingWebhookToken(hook *model.OutgoingWebhook) (*model.OutgoingWebh
} }
} }
func HandleIncomingWebhook(hookId string, req *model.IncomingWebhookRequest, siteURL string) *model.AppError { func HandleIncomingWebhook(hookId string, req *model.IncomingWebhookRequest) *model.AppError {
if !utils.Cfg.ServiceSettings.EnableIncomingWebhooks { if !utils.Cfg.ServiceSettings.EnableIncomingWebhooks {
return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented) return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
@@ -514,7 +514,7 @@ func HandleIncomingWebhook(hookId string, req *model.IncomingWebhookRequest, sit
return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.permissions.app_error", nil, "", http.StatusForbidden) return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.permissions.app_error", nil, "", http.StatusForbidden)
} }
if _, err := CreateWebhookPost(hook.UserId, hook.TeamId, channel.Id, text, overrideUsername, overrideIconUrl, req.Props, webhookType, siteURL); err != nil { if _, err := CreateWebhookPost(hook.UserId, hook.TeamId, channel.Id, text, overrideUsername, overrideIconUrl, req.Props, webhookType); err != nil {
return err return err
} }

Просмотреть файл

@@ -166,7 +166,7 @@ func removeUserFromChannel(channel *model.Channel, user *model.User, userArg str
CommandPrintErrorln("Can't find user '" + userArg + "'") CommandPrintErrorln("Can't find user '" + userArg + "'")
return return
} }
if err := app.RemoveUserFromChannel(user.Id, "", channel, utils.GetSiteURL()); err != nil { if err := app.RemoveUserFromChannel(user.Id, "", channel); err != nil {
CommandPrintErrorln("Unable to remove '" + userArg + "' from " + channel.Name + ". Error: " + err.Error()) CommandPrintErrorln("Unable to remove '" + userArg + "' from " + channel.Name + ". Error: " + err.Error())
} }
} }

Просмотреть файл

@@ -8,7 +8,6 @@ import (
"github.com/mattermost/platform/app" "github.com/mattermost/platform/app"
"github.com/mattermost/platform/model" "github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
@@ -155,7 +154,7 @@ func addUserToTeam(team *model.Team, user *model.User, userArg string) {
CommandPrintErrorln("Can't find user '" + userArg + "'") CommandPrintErrorln("Can't find user '" + userArg + "'")
return return
} }
if err := app.JoinUserToTeam(team, user, utils.GetSiteURL()); err != nil { if err := app.JoinUserToTeam(team, user); err != nil {
CommandPrintErrorln("Unable to add '" + userArg + "' to " + team.Name) CommandPrintErrorln("Unable to add '" + userArg + "' to " + team.Name)
} }
} }

Просмотреть файл

@@ -1,6 +1,6 @@
{ {
"ServiceSettings": { "ServiceSettings": {
"SiteURL": "", "SiteURL": "http://localhost:8065",
"ListenAddress": ":8065", "ListenAddress": ":8065",
"ConnectionSecurity": "", "ConnectionSecurity": "",
"TLSCertFile": "", "TLSCertFile": "",
@@ -55,10 +55,10 @@
"CustomDescriptionText": "", "CustomDescriptionText": "",
"RestrictDirectMessage": "any", "RestrictDirectMessage": "any",
"RestrictTeamInvite": "all", "RestrictTeamInvite": "all",
"RestrictPublicChannelCreation": "all",
"RestrictPrivateChannelCreation": "all",
"RestrictPublicChannelManagement": "all", "RestrictPublicChannelManagement": "all",
"RestrictPrivateChannelManagement": "all", "RestrictPrivateChannelManagement": "all",
"RestrictPublicChannelCreation": "all",
"RestrictPrivateChannelCreation": "all",
"RestrictPublicChannelDeletion": "all", "RestrictPublicChannelDeletion": "all",
"RestrictPrivateChannelDeletion": "all", "RestrictPrivateChannelDeletion": "all",
"RestrictPrivateChannelManageMembers": "all", "RestrictPrivateChannelManageMembers": "all",

Просмотреть файл

@@ -10,7 +10,7 @@ import (
type SamlInterface interface { type SamlInterface interface {
ConfigureSP() *model.AppError ConfigureSP() *model.AppError
BuildRequest(relayState string) (*model.SamlAuthRequest, *model.AppError) BuildRequest(relayState string) (*model.SamlAuthRequest, *model.AppError)
DoLogin(encodedXML string, relayState map[string]string, siteURL string) (*model.User, *model.AppError) DoLogin(encodedXML string, relayState map[string]string) (*model.User, *model.AppError)
GetMetadata() (string, *model.AppError) GetMetadata() (string, *model.AppError)
} }

Просмотреть файл

@@ -72,7 +72,7 @@ func TestIncomingWebhook(t *testing.T) {
team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN} team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
team = ApiClient.Must(ApiClient.CreateTeam(team)).Data.(*model.Team) team = ApiClient.Must(ApiClient.CreateTeam(team)).Data.(*model.Team)
app.JoinUserToTeam(team, user, utils.GetSiteURL()) app.JoinUserToTeam(team, user)
app.UpdateUserRoles(user.Id, model.ROLE_SYSTEM_ADMIN.Id) app.UpdateUserRoles(user.Id, model.ROLE_SYSTEM_ADMIN.Id)
ApiClient.SetTeamId(team.Id) ApiClient.SetTeamId(team.Id)

Просмотреть файл

@@ -69,6 +69,10 @@ export default class AdminSettings extends React.Component {
if (callback) { if (callback) {
callback(); callback();
} }
if (this.handleSaved) {
this.handleSaved(config);
}
}, },
(err) => { (err) => {
this.setState({ this.setState({
@@ -79,6 +83,10 @@ export default class AdminSettings extends React.Component {
if (callback) { if (callback) {
callback(); callback();
} }
if (this.handleSaved) {
this.handleSaved(config);
}
} }
); );
} }

Просмотреть файл

@@ -2,18 +2,20 @@
// See License.txt for license information. // See License.txt for license information.
import React from 'react'; import React from 'react';
import {FormattedMessage} from 'react-intl';
import ErrorStore from 'stores/error_store.jsx';
import * as Utils from 'utils/utils.jsx'; import * as Utils from 'utils/utils.jsx';
import AdminSettings from './admin_settings.jsx'; import AdminSettings from './admin_settings.jsx';
import {FormattedMessage, FormattedHTMLMessage} from 'react-intl'; import BooleanSetting from './boolean_setting.jsx';
import {ConnectionSecurityDropdownSettingWebserver} from './connection_security_dropdown_setting.jsx';
import PurgeCachesButton from './purge_caches.jsx';
import ReloadConfigButton from './reload_config.jsx';
import SettingsGroup from './settings_group.jsx'; import SettingsGroup from './settings_group.jsx';
import TextSetting from './text_setting.jsx'; import TextSetting from './text_setting.jsx';
import ReloadConfigButton from './reload_config.jsx';
import PurgeCachesButton from './purge_caches.jsx';
import WebserverModeDropdownSetting from './webserver_mode_dropdown_setting.jsx'; import WebserverModeDropdownSetting from './webserver_mode_dropdown_setting.jsx';
import {ConnectionSecurityDropdownSettingWebserver} from './connection_security_dropdown_setting.jsx';
import BooleanSetting from './boolean_setting.jsx';
export default class ConfigurationSettings extends AdminSettings { export default class ConfigurationSettings extends AdminSettings {
constructor(props) { constructor(props) {
@@ -21,6 +23,8 @@ export default class ConfigurationSettings extends AdminSettings {
this.getConfigFromState = this.getConfigFromState.bind(this); this.getConfigFromState = this.getConfigFromState.bind(this);
this.handleSaved = this.handleSaved.bind(this);
this.renderSettings = this.renderSettings.bind(this); this.renderSettings = this.renderSettings.bind(this);
} }
@@ -62,6 +66,14 @@ export default class ConfigurationSettings extends AdminSettings {
}; };
} }
handleSaved(newConfig) {
const lastError = ErrorStore.getLastError();
if (lastError && lastError.message === 'error_bar.site_url' && newConfig.ServiceSettings.SiteURL) {
ErrorStore.clearLastError(true);
}
}
renderTitle() { renderTitle() {
return ( return (
<FormattedMessage <FormattedMessage
@@ -92,9 +104,9 @@ export default class ConfigurationSettings extends AdminSettings {
} }
placeholder={Utils.localizeMessage('admin.service.siteURLExample', 'Ex "https://mattermost.example.com:1234"')} placeholder={Utils.localizeMessage('admin.service.siteURLExample', 'Ex "https://mattermost.example.com:1234"')}
helpText={ helpText={
<FormattedHTMLMessage <FormattedMessage
id='admin.service.siteURLDescription' id='admin.service.siteURLDescription'
defaultMessage='The URL, including port number and protocol, that users will use to access Mattermost. This field can be left blank unless you are configuring email batching in <b>Notifications > Email</b>. When blank, the URL is automatically configured based on incoming traffic.' defaultMessage='The URL, including port number and protocol, that users will use to access Mattermost. This setting is required.'
/> />
} }
value={this.state.siteURL} value={this.state.siteURL}

Просмотреть файл

@@ -13,11 +13,13 @@ const StatTypes = Constants.StatTypes;
import React from 'react'; import React from 'react';
import {FormattedMessage, FormattedHTMLMessage} from 'react-intl'; import {FormattedMessage, FormattedHTMLMessage} from 'react-intl';
import {Link} from 'react-router';
const EXPIRING_ERROR = 'error_bar.expiring'; const EXPIRING_ERROR = 'error_bar.expiring';
const EXPIRED_ERROR = 'error_bar.expired'; const EXPIRED_ERROR = 'error_bar.expired';
const PAST_GRACE_ERROR = 'error_bar.past_grace'; const PAST_GRACE_ERROR = 'error_bar.past_grace';
const RENEWAL_LINK = 'https://licensing.mattermost.com/renew'; const RENEWAL_LINK = 'https://licensing.mattermost.com/renew';
const SITE_URL_ERROR = 'error_bar.site_url';
const BAR_DEVELOPER_TYPE = 'developer'; const BAR_DEVELOPER_TYPE = 'developer';
const BAR_CRITICAL_TYPE = 'critical'; const BAR_CRITICAL_TYPE = 'critical';
@@ -32,15 +34,31 @@ export default class ErrorBar extends React.Component {
ErrorStore.clearLastError(); ErrorStore.clearLastError();
this.setInitialError();
this.state = ErrorStore.getLastError();
}
setInitialError() {
let isSystemAdmin = false; let isSystemAdmin = false;
const user = UserStore.getCurrentUser(); const user = UserStore.getCurrentUser();
if (user) { if (user) {
isSystemAdmin = Utils.isSystemAdmin(user.roles); isSystemAdmin = Utils.isSystemAdmin(user.roles);
} }
if (!ErrorStore.getIgnoreNotification() && global.window.mm_config.SendEmailNotifications === 'false') { const errorIgnored = ErrorStore.getIgnoreNotification();
if (!errorIgnored) {
if (global.mm_config.SendEmailNotifications === 'false') {
ErrorStore.storeLastError({notification: true, message: Utils.localizeMessage('error_bar.preview_mode', 'Preview Mode: Email notifications have not been configured')}); ErrorStore.storeLastError({notification: true, message: Utils.localizeMessage('error_bar.preview_mode', 'Preview Mode: Email notifications have not been configured')});
} else if (isLicensePastGracePeriod()) { return;
} else if (isSystemAdmin && global.mm_config.SiteURL === '') {
ErrorStore.storeLastError({notification: true, message: SITE_URL_ERROR});
return;
}
}
if (isLicensePastGracePeriod()) {
if (isSystemAdmin) { if (isSystemAdmin) {
ErrorStore.storeLastError({notification: true, message: EXPIRED_ERROR, type: BAR_CRITICAL_TYPE}); ErrorStore.storeLastError({notification: true, message: EXPIRED_ERROR, type: BAR_CRITICAL_TYPE});
} else { } else {
@@ -51,8 +69,6 @@ export default class ErrorBar extends React.Component {
} else if (isLicenseExpiring() && isSystemAdmin) { } else if (isLicenseExpiring() && isSystemAdmin) {
ErrorStore.storeLastError({notification: true, message: EXPIRING_ERROR}); ErrorStore.storeLastError({notification: true, message: EXPIRING_ERROR});
} }
this.state = ErrorStore.getLastError();
} }
isValidError(s) { isValidError(s) {
@@ -157,6 +173,45 @@ export default class ErrorBar extends React.Component {
defaultMessage='Enterprise license is expired and some features may be disabled. Please contact your System Administrator for details.' defaultMessage='Enterprise license is expired and some features may be disabled. Please contact your System Administrator for details.'
/> />
); );
} else if (message === SITE_URL_ERROR) {
let id;
let defaultMessage;
if (global.mm_config.EnableSignUpWithGitLab === 'true') {
id = 'error_bar.site_url_gitlab';
defaultMessage = '{docsLink} is now a required setting. Please configure it in the System Console or in gitlab.rb if you\'re using GitLab Mattermost.';
} else {
id = 'error_bar.site_url';
defaultMessage = '{docsLink} is now a required setting. Please configure it in {link}.';
}
message = (
<FormattedMessage
id={id}
defaultMessage={defaultMessage}
values={{
docsLink: (
<a
href='https://docs.mattermost.com/administration/config-settings.html#site-url'
rel='noopener noreferrer'
target='_blank'
>
<FormattedMessage
id='error_bar.site_url.docsLink'
defaultMessage='Site URL'
/>
</a>
),
link: (
<Link to='/admin_console/general/configuration'>
<FormattedMessage
id='error_bar.site_url.link'
defaultMessage='the System Console'
/>
</Link>
)
}}
/>
);
} }
return ( return (

Просмотреть файл

@@ -725,7 +725,7 @@
"admin.service.sessionCacheDesc": "The number of minutes to cache a session in memory.", "admin.service.sessionCacheDesc": "The number of minutes to cache a session in memory.",
"admin.service.sessionDaysEx": "E.g.: \"30\"", "admin.service.sessionDaysEx": "E.g.: \"30\"",
"admin.service.siteURL": "Site URL:", "admin.service.siteURL": "Site URL:",
"admin.service.siteURLDescription": "The URL, including port number and protocol, that users will use to access Mattermost. This field can be left blank unless you are configuring email batching in <b>Notifications > Email</b>. When blank, the URL is automatically configured based on incoming traffic.", "admin.service.siteURLDescription": "The URL, including port number and protocol, that users will use to access Mattermost. This setting is required.",
"admin.service.siteURLExample": "E.g.: \"https://mattermost.example.com:1234\"", "admin.service.siteURLExample": "E.g.: \"https://mattermost.example.com:1234\"",
"admin.service.ssoSessionDays": "Session length SSO (days):", "admin.service.ssoSessionDays": "Session length SSO (days):",
"admin.service.ssoSessionDaysDesc": "The number of days from the last time a user entered their credentials to the expiry of the user's session. If the authentication method is SAML or GitLab, the user may automatically be logged back in to Mattermost if they are already logged in to SAML or GitLab. After changing this setting, the setting will take effect after the next time the user enters their credentials.", "admin.service.ssoSessionDaysDesc": "The number of days from the last time a user entered their credentials to the expiry of the user's session. If the authentication method is SAML or GitLab, the user may automatically be logged back in to Mattermost if they are already logged in to SAML or GitLab. After changing this setting, the setting will take effect after the next time the user enters their credentials.",
@@ -1310,6 +1310,10 @@
"error_bar.expiring": "Enterprise license expires on {date}. <a href='{link}' target='_blank'>Please renew.</a>", "error_bar.expiring": "Enterprise license expires on {date}. <a href='{link}' target='_blank'>Please renew.</a>",
"error_bar.past_grace": "Enterprise license is expired and some features may be disabled. Please contact your System Administrator for details.", "error_bar.past_grace": "Enterprise license is expired and some features may be disabled. Please contact your System Administrator for details.",
"error_bar.preview_mode": "Preview Mode: Email notifications have not been configured", "error_bar.preview_mode": "Preview Mode: Email notifications have not been configured",
"error_bar.site_url": "{docsLink} is now a required setting. Please configure it in {link}.",
"error_bar.site_url.docsLink": "Site URL",
"error_bar.site_url.link": "the System Console",
"error_bar.site_url_gitlab": "{docsLink} is now a required setting. Please configure it in the System Console or in gitlab.rb if you're using GitLab Mattermost.",
"file_attachment.download": "Download", "file_attachment.download": "Download",
"file_info_preview.size": "Size ", "file_info_preview.size": "Size ",
"file_info_preview.type": "File type ", "file_info_preview.type": "File type ",

Просмотреть файл

@@ -62,11 +62,11 @@ class ErrorStoreClass extends EventEmitter {
BrowserStore.setGlobalItem('last_error_conn', count); BrowserStore.setGlobalItem('last_error_conn', count);
} }
clearLastError() { clearLastError(force) {
var lastError = this.getLastError(); var lastError = this.getLastError();
// preview message can only be cleared by clearNotificationError // preview message can only be cleared by clearNotificationError
if (lastError && lastError.notification) { if (!force && lastError && lastError.notification) {
return; return;
} }