コード例 #1
0
 public IHttpActionResult AddRole(MvcRole role)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest(ModelState));
     }
     try
     {
         RoleManagerBso.AddRole(role);
         return(Ok(role.Id));
     }
     catch (DbUpdateException dbex)
     {
         var internalEx = dbex.InnerException?.InnerException;
         if (internalEx != null)
         {
             if (internalEx is SqlException)
             {
                 var sqlEx = internalEx as SqlException;
                 if (sqlEx.Number == 2601)
                 {
                     throw new System.Exception(string.Format("{0} already exists. Please use another name.", role.Name));
                 }
             }
         }
         throw new System.Exception("Add new role failed.Please try again.");
     }
 }
コード例 #2
0
 /// <summary>
 /// Update role
 /// </summary>
 /// <param name="role"></param>
 public void UpdateRole(MvcRole role)
 {
     UnitOfWork.Repository <ApplicationRole>().Update(new ApplicationRole
     {
         Id   = role.Id,
         Name = role.Name
     });
     UnitOfWork.Save();
 }
コード例 #3
0
        /// <summary>
        /// Get users who belong to the role
        /// </summary>
        /// <param name="role"></param>
        /// <returns></returns>
        public List <string> GetUsersByRole(MvcRole role)
        {
            var           dbRole   = this.RoleManager.FindById(role.Id);
            List <string> mvcUsers = new List <string>();

            foreach (var user in dbRole.Users)
            {
                mvcUsers.Add(user.UserId);
            }
            return(mvcUsers);
        }
コード例 #4
0
        /// <summary>
        /// Create a new role
        /// </summary>
        /// <param name="role"></param>
        /// <returns></returns>
        public MvcRole AddRole(MvcRole role)
        {
            var dbRole = UnitOfWork.Repository <ApplicationRole>().Insert(new ApplicationRole
            {
                Name = role.Name
            });

            UnitOfWork.Save();
            role.Id = dbRole.Id;
            return(role);
        }
コード例 #5
0
 public IHttpActionResult AddActionsToRole(MvcRole role)
 {
     try
     {
         RoleManagerBso.AddActionsToRole(role);
         return(Ok());
     }
     catch (Exception e)
     {
         return(InternalServerError(e));
     }
 }
コード例 #6
0
 public IHttpActionResult UpdateRole(MvcRole role)
 {
     if (ModelState.IsValid)
     {
         RoleManagerBso.UpdateRole(role);
         return(Ok());
     }
     else
     {
         return(BadRequest(ModelState));
     }
 }
コード例 #7
0
        public async Task <IHttpActionResult> AddUsersToRole(MvcRole role)
        {
            try
            {
                await UserManagerBso.AddUsersToRole(role);

                return(Ok());
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
コード例 #8
0
        /// <summary>
        /// Add actions to role
        /// </summary>
        /// <param name="role"></param>
        /// <param name="mvcActions"></param>
        public void AddActionsToRole(MvcRole role)
        {
            var dbRole     = UnitOfWork.Repository <ApplicationRole>().GetByID(role.Id);
            var mvcActions = role.Actions;

            //add new actions to role
            if (dbRole != null)
            {
                foreach (var action in mvcActions)
                {
                    if (!dbRole.Actions.Any(act => action.ControllerName == act.ControllerName &&
                                            action.ActionName == act.ActionName &&
                                            string.Join(",", action.ParameterTypes.ToArray()) == act.ParameterTypes &&
                                            action.ReturnType == act.ReturnType))
                    {
                        var dbAction = this.GetAction(action);
                        if (dbAction == null)
                        {
                            dbRole.Actions.Add(new Models.Action
                            {
                                ActionName     = action.ActionName,
                                Methods        = action.Methods,
                                ControllerName = action.ControllerName,
                                ParameterTypes = string.Join(",", action.ParameterTypes.ToArray()),
                                ReturnType     = action.ReturnType
                            });
                        }
                        else
                        {
                            dbRole.Actions.Add(dbAction);
                        }
                    }
                }
                //remove not selected actions from role
                foreach (var action in dbRole.Actions.ToList())
                {
                    if (!mvcActions.Any(act => action.ControllerName == act.ControllerName &&
                                        action.ActionName == act.ActionName &&
                                        string.Join(",", act.ParameterTypes.ToArray()) == action.ParameterTypes &&
                                        action.ReturnType == act.ReturnType))
                    {
                        dbRole.Actions.Remove(action);
                    }
                }
                UnitOfWork.Save();
            }
        }
コード例 #9
0
        /// <summary>
        /// Add users to role
        /// </summary>
        /// <param name="role">role with assigned users</param>
        /// <returns></returns>
        public async Task AddUsersToRole(MvcRole role)
        {
            string roleName = role.Name;
            var    users    = UserManager.Users.ToList();

            //remove users from role first
            foreach (var user in users)
            {
                await this.UserManager.RemoveFromRoleAsync(user.Id, roleName);
            }

            //add new users to role
            foreach (var u in role.Users)
            {
                await this.UserManager.AddToRoleAsync(u.Id, roleName);
            }
        }
コード例 #10
0
 public IHttpActionResult DeleteRole(MvcRole role)
 {
     RoleManagerBso.DeleteRole(role);
     return(Ok());
 }
コード例 #11
0
 public List <string> GetUsersByRole(MvcRole role)
 {
     return(UserManagerBso.GetUsersByRole(role));
 }
コード例 #12
0
 /// <summary>
 /// Delete role
 /// </summary>
 /// <param name="role"></param>
 public void DeleteRole(MvcRole role)
 {
     UnitOfWork.Repository <ApplicationRole>().Delete(role.Id);
     UnitOfWork.Save();
 }