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
Этот коммит содержится в:
коммит произвёл
Joram Wilander
родитель
3a79e451ff
Коммит
c7bdce8a66
1
Makefile
1
Makefile
@@ -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))))
|
||||||
}
|
}
|
||||||
|
|||||||
16
api/oauth.go
16
api/oauth.go
@@ -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) {
|
||||||
|
|||||||
10
api/team.go
10
api/team.go
@@ -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
|
||||||
|
|||||||
40
api/user.go
40
api/user.go
@@ -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
|
||||||
|
|||||||
12
api4/team.go
12
api4/team.go
@@ -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
|
||||||
|
|||||||
26
api4/user.go
26
api4/user.go
@@ -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 {
|
||||||
|
|||||||
18
app/post.go
18
app/post.go
@@ -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}))
|
||||||
|
|||||||
44
app/team.go
44
app/team.go
@@ -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")
|
||||||
}
|
}
|
||||||
|
|||||||
64
app/user.go
64
app/user.go
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user