summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReed Garmsen <rgarmsen2295@gmail.com>2015-07-07 17:57:25 -0700
committerReed Garmsen <rgarmsen2295@gmail.com>2015-07-07 17:57:25 -0700
commitddeb3ec7385c921e809b6c5ad337b23ea9ce8776 (patch)
tree575f9b6a49383b1990f5d5738c1040761f98d212
parent66e97a56b0814b7c2378e9c7b4603d1c6408d330 (diff)
downloadchat-ddeb3ec7385c921e809b6c5ad337b23ea9ce8776.tar.gz
chat-ddeb3ec7385c921e809b6c5ad337b23ea9ce8776.tar.bz2
chat-ddeb3ec7385c921e809b6c5ad337b23ea9ce8776.zip
Added a server side check to see if members who are trying to be invited have already been invited by checking the email. Client handles it as if it was an email error.
-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() {