public static bool TryAuthorizeUser(User user, UserRole role) { return user.IsInRole(role); }
public PopulateResults PopulateWithData(NameValueCollection data, User user, bool checkRequired = false) { PopulateResults results = new PopulateResults(); string username = null; foreach (string name in data.AllKeys) { string[] values = data.GetValues(name); string value = values[values.Length - 1].Trim(); switch (name.ToLowerInvariant()) { case "email": { string email = value.ToLowerInvariant(); if (email != this.Email) { string gravatar = UserService.GenerateGravatarId(email); string verifyToken = UserService.GenerateVerifyToken(); results.Updates.Add("Email", new PopulateResults.UpdatedValue() { Old = this.Email, New = this.Email = email, }); results.Updates.Add("GravatarId", new PopulateResults.UpdatedValue() { Old = this.GravatarId, New = this.GravatarId = gravatar, }); results.Updates.Add("VerifyToken", new PopulateResults.UpdatedValue() { Old = this.VerifyToken, New = this.VerifyToken = verifyToken, }); } } break; case "fullname": if (value != this.FullName) { results.Updates.Add("FullName", new PopulateResults.UpdatedValue() { Old = this.FullName, New = this.FullName = value, }); } break; case "username": if (String.IsNullOrEmpty(value)) { username = String.Empty; } else if (UsernameValidation.IsMatch(value)) { username = value; } else { results.Errors.Add(new ValidationError() { Field = "username", Message = "Usernames must be three to fifteen characters long and can only contain letters and numbers." }); } break; case "role": if (user.IsInRole(UserRole.Admin)) { UserRole role; if (Enum.TryParse(value, true, out role)) { if (role != this.Role) { results.Updates.Add("Role", new PopulateResults.UpdatedValue() { Old = this.Role, New = this.Role = role, }); } } else { results.Errors.Add(new ValidationError() { Field = name, Message = "Unknown user role." }); } } else { results.Errors.Add(new ValidationError() { Field = name, Message = "Forbidden." }); } break; } } // Check username last since it might default to an updated email. if (username != null) { if (String.IsNullOrEmpty(username)) { username = this.Email; } else if (username != this.UserName) { results.Updates.Add("UserName", new PopulateResults.UpdatedValue() { Old = this.UserName, New = this.UserName = username, }); } } if (checkRequired) { if (String.IsNullOrEmpty(this.Email)) { results.Errors.Add(new ValidationError() { Field = "email", Message = "Required." }); } } return results; }