Example #1
0
        private async Task <IdentityResult> EnsureRole(
            ICustomRoleManager roleManager,
            ICustomUserManager userManager,
            string uid, string role)
        {
            IdentityResult IR = null;

            if (roleManager == null)
            {
                throw new Exception("roleManager null");
            }

            if (!await roleManager.RoleExistsAsync(role))//ensure that current role doesn't exists and create it
            {
                IR = await roleManager.CreateAsync(new CustomRole(role));
            }

            var user = await userManager.FindByIdAsync(uid);

            if (user == null)
            {
                throw new Exception("User does not exists!");
            }

            if (!await userManager.IsInRoleAsync(user, role))
            {
                IR = await userManager.AddToRoleAsync(user, role);
            }


            return(IR);
        }
Example #2
0
        public async virtual Task <IActionResult> CreateAsync([FromBody] TRoleRequest request, Func <Task> logFunction = null)
        {
            if (!ModelState.IsValid)
            {
                throw new ArgumentException(ModelState.ModelStateToString(LocalizationService));
            }

            var result = await CommonOperationAsync <TRole>(async() =>
            {
                var role = Mapper.Map <TRole>(request);

                var response = await _roleManager.CreateAsync(role);
                if (!response.Succeeded)
                {
                    foreach (var error in response.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }
                    throw new ArgumentException(ModelState.ModelStateToString(LocalizationService));
                }
                return(role);
            });

            if (logFunction != null)
            {
                await logFunction.Invoke();
            }

            return(Ok(new ApiResponse(LocalizationService, Logger).Ok(Mapper.Map <TRole, TRoleResponse>(result))));
        }