Esempio n. 1
0
        public static BaseApiResponse HasRightToEditUser(ApplicationUserBaseModel userDto, IPrincipal userPrincipal, CltRolesSetting setting)
        {
            if (userPrincipal.IsInRole(setting.RootRoleName))
            {
                return(new BaseApiResponse(true, "Root может делать все что угодно"));
            }

            if (userDto.RoleNames.Any(x => x == setting.RootRoleName))
            {
                return(new BaseApiResponse(false, "Вы не можете редактировать пользователя Root"));
            }

            var isAdmin = userPrincipal.IsInRole(setting.AdminRoleName);

            if (isAdmin && userDto.RoleNames.Any(x => x == setting.AdminRoleName))
            {
                return(new BaseApiResponse(false, "Вы не можете редактировать пользователя, который является Администратором, для этого нужны права Супер-Администратора"));
            }

            if (isAdmin)
            {
                return(new BaseApiResponse(true, "Вы не можете редактировать пользователя, который является Администратором, для этого нужны права Супер-Администратора"));
            }

            return(new BaseApiResponse(true, "Вы не можете редактировать пользователя, так как у вас недостаточно прав"));
        }
Esempio n. 2
0
        public static bool IsInRole(this ApplicationUserBaseModel user, string roleName)
        {
            if (user.RoleNames == null)
            {
                throw new ApplicationException("Роли не установлены");
            }

            return(user.RoleNames.Any(x => x == roleName));
        }
Esempio n. 3
0
 /// <summary>
 /// Из модели DTO в сущность
 /// </summary>
 /// <returns></returns>
 public static ApplicationUser ToEntity(this ApplicationUserBaseModel model)
 {
     return(new ApplicationUser
     {
         Id = model.Id,
         PhoneNumber = model.PhoneNumber,
         Email = model.Email,
         EmailConfirmed = model.EmailConfirmed,
         SecurityStamp = model.SecurityStamp
     });
 }
Esempio n. 4
0
        public static UserDifferenceAction GetComparingAction(ApplicationUserBaseModel userFromCookie, ApplicationUserBaseModel userFromDb,
                                                              AccountSettingsModel accountSettings,
                                                              RootSettings rightsSettings)
        {
            if (!userFromCookie.EmailConfirmed && userFromCookie.Email != rightsSettings.RootEmail && !accountSettings.IsLoginEnabledForUsersWhoDidNotConfirmEmail)
            {
                return(UserDifferenceAction.Logout);
            }

            if (userFromDb.DeActivated || userFromDb.PasswordHash != userFromCookie.PasswordHash)
            {
                return(UserDifferenceAction.Logout);
            }

            var compareResult = Compare(userFromCookie, userFromDb);

            return(!compareResult ? UserDifferenceAction.AutoReLogin : UserDifferenceAction.None);
        }
Esempio n. 5
0
        public static bool Compare(ApplicationUserBaseModel user1, ApplicationUserBaseModel user2)
        {
            var rightsChanged = user1.RoleNames.Count != user2.RoleNames.Count;

            if (!rightsChanged)
            {
                for (var i = 0; i < user1.RoleNames.Count; i++)
                {
                    if (user1.RoleNames.OrderBy(x => x).ToList()[i] == user2.RoleNames.OrderBy(x => x).ToList()[i])
                    {
                        continue;
                    }
                    rightsChanged = true;
                    break;
                }
            }

            return(user1.Id == user2.Id &&
                   !rightsChanged &&
                   user1.Name == user2.Name &&
                   string.IsNullOrEmpty(user1.PhoneNumber) == string.IsNullOrEmpty(user2.PhoneNumber));
        }