summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/team.go9
-rw-r--r--web/react/components/invite_member_modal.jsx18
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() {