diff options
-rw-r--r-- | api/team.go | 9 | ||||
-rw-r--r-- | web/react/components/invite_member_modal.jsx | 18 |
2 files changed, 25 insertions, 2 deletions
diff --git a/api/team.go b/api/team.go index 15e4e2c17..7265b1d07 100644 --- a/api/team.go +++ b/api/team.go @@ -456,6 +456,15 @@ func inviteMembers(c *Context, w http.ResponseWriter, r *http.Request) { user = result.Data.(*model.User) } + var invNum int64 = 0 + for _, invite := range invites.Invites { + if result := <-Srv.Store.User().GetByEmail(c.Session.TeamId, invite["email"]); result.Err == nil || result.Err.Message != "We couldn't find the existing account" { + c.Err = model.NewAppError("invite_members", "This person is already on your team", strconv.FormatInt(invNum, 10)) + return + } + invNum++; + } + ia := make([]string, len(invites.Invites)) for _, invite := range invites.Invites { ia = append(ia, invite["email"]) diff --git a/web/react/components/invite_member_modal.jsx b/web/react/components/invite_member_modal.jsx index d1672126d..bfcbfc94f 100644 --- a/web/react/components/invite_member_modal.jsx +++ b/web/react/components/invite_member_modal.jsx @@ -43,6 +43,7 @@ module.exports = React.createClass({ var first_name_errors = this.state.first_name_errors; var last_name_errors = this.state.last_name_errors; var valid = true; + var profiles = UserStore.getProfiles(); for (var i = 0; i < count; i++) { var index = invite_ids[i]; @@ -52,6 +53,13 @@ module.exports = React.createClass({ email_errors[index] = "Please enter a valid email address"; valid = false; } else { + for (var email in profiles) { + if (email === invite.email) { + email_errors[index] = "This person is already on your team"; + valid = false; + } + } + email_errors[index] = ""; } @@ -89,7 +97,12 @@ module.exports = React.createClass({ $(this.refs.modal.getDOMNode()).modal('hide'); }.bind(this), function(err) { - this.setState({ server_error: err }); + if (err.message === "This person is already on your team") { + email_errors[err.detailed_error] = err.message; + this.setState({ email_errors: email_errors }); + } + else + this.setState({ server_error: err.message}); }.bind(this) ); @@ -138,7 +151,8 @@ module.exports = React.createClass({ id_count: 0, email_errors: {}, first_name_errors: {}, - last_name_errors: {} + last_name_errors: {}, + server_errors: {} }; }, render: function() { |