Exemplo n.º 1
0
        public async Task <IActionResult> CreateRole(NewRoleDTO model)
        {
            var roleExists = await _roleManager.RoleExistsAsync(model.Name); // Check if role with same name exists

            if (roleExists)
            {
                ModelState.AddModelError("Name", "Role with given name already exists");
                return(Conflict(ModelState));
            }

            // check if roleactions are valid
            var allRoleActions = SharedLibraries.Permissions.GetPermissions().Select(a => a.Name);

            if (!allRoleActions.ContainsAllItems(model.RoleActions))
            {
                return(BadRequest());
            }

            try
            {
                // create role
                var res = await _roleManager.CreateAsync(new ApplicationRole()
                {
                    Name        = model.Name,
                    Description = model.Description
                });

                if (!res.Succeeded)
                {
                    return(StatusCode((int)HttpStatusCode.InternalServerError));
                }

                // add claims based on roleactions to role
                var createdRole = await _roleManager.FindByNameAsync(model.Name);

                foreach (var roleAction in model.RoleActions.Distinct())
                {
                    var res2 = await _roleManager.AddClaimAsync(createdRole, new Claim("permission", roleAction));

                    if (res2.Succeeded)
                    {
                        continue;
                    }
                    else // if error occurs during claim add, delete role and return
                    {
                        await _roleManager.DeleteAsync(createdRole);

                        return(StatusCode((int)HttpStatusCode.InternalServerError));
                    }
                }

                return(CreatedAtAction(nameof(CreateRole), (await _roleManager.FindByNameAsync(model.Name)).Id));
            }
            catch (Exception)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError));
            }
        }
Exemplo n.º 2
0
        public async Task <HttpResponseMessage> AddRole([FromBody] NewRoleDTO data)
        {
            var result = await _roleManager.CreateAsync(new ApplicationRole
            {
                Name = data.RoleName
            });

            return(Request.CreateResponse(result));
        }
Exemplo n.º 3
0
        public HttpResponseMessage EditRole(NewRoleDTO roleName)
        {
            try
            {
                if ((roleName.RoleId != -1))
                {
                    _roleID = roleName.RoleId;
                }
                DotNetNuke.Security.Roles.RoleController oDnnRoleController = new DotNetNuke.Security.Roles.RoleController();
                RoleInfo oRole = new RoleInfo();
                oRole.PortalID       = PortalSettings.PortalId;
                oRole.RoleName       = roleName.Name;
                oRole.IsPublic       = false;
                oRole.Status         = RoleStatus.Approved;
                oRole.AutoAssignment = false;
                oRole.RoleGroupID    = roleName.RoleGroup;
                oRole.Status         = (RoleStatus)roleName.Status;
                oRole.Description    = "";
                oRole.IsSystemRole   = false;


                if (_roleID == -1)
                {
                    var rolename = oRole.RoleName.ToUpper();
                    if (DotNetNuke.Security.Roles.RoleController.Instance.GetRole(oRole.PortalID,
                                                                                  r => rolename.Equals(r.RoleName, StringComparison.InvariantCultureIgnoreCase)) == null)
                    {
                        oDnnRoleController.AddRole(oRole);
                    }
                }
                else
                {
                    oRole.RoleID = roleName.RoleId;
                    DotNetNuke.Security.Roles.RoleController.Instance.UpdateRole(oRole);
                }
                DataCache.ClearCache();
                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            catch (Exception exc)
            {
                Exceptions.LogException(exc);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
            }
        }