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.

Этот коммит содержится в:
Reed Garmsen
2015-07-07 17:57:25 -07:00
родитель 66e97a56b0
Коммит ddeb3ec738
2 изменённых файлов: 25 добавлений и 2 удалений

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

@@ -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"])

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

@@ -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() {