コード例 #1
0
ファイル: UserService.cs プロジェクト: robmen/tinybugs
 public static bool TryAuthorizeUser(User user, UserRole role)
 {
     return user.IsInRole(role);
 }
コード例 #2
0
ファイル: User.cs プロジェクト: robmen/tinybugs
        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;
        }