示例#1
0
        public async Task <IActionResult> Register([FromBody] RegisterVModel model)
        {
            var user = new LiteForumUser {
                UserName = model.Username, Email = model.Email
            };
            var result = await _userManager.CreateAsync(user, model.Password);

            if (result.Succeeded)
            {
                _logger.LogInformation("User created a new account with password.");
                await _userManager.AddToRoleAsync(user, AppConstants.String.Roles.Member); // add user to default member role

                await _signInManager.SignInAsync(user, isPersistent : false);

                _logger.LogInformation("User created a new account with password.");
                return(Ok(new
                {
                    username = user.UserName,
                    email = user.Email,
                    status = "successfull"
                }));
            }
            ModelState.AddModelError("validation_error", result.Errors.FirstOrDefault().Description);
            return(BadRequest(ModelState));
        }
示例#2
0
        private async Task <List <Claim> > GetValidClaims(LiteForumUser user)
        {
            IdentityOptions _options = new IdentityOptions();
            var             claims   = new List <Claim>
            {
                new Claim(JwtRegisteredClaimNames.Sub, user.Id),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                new Claim(JwtRegisteredClaimNames.Iat, ToUnixEpochDate(DateTime.UtcNow).ToString(), ClaimValueTypes.Integer64),
                new Claim(_options.ClaimsIdentity.UserIdClaimType, user.Id.ToString()),
                new Claim(_options.ClaimsIdentity.UserNameClaimType, user.UserName)
            };

            var userClaims = await _userManager.GetClaimsAsync(user);

            var userRoles = await _userManager.GetRolesAsync(user);

            claims.AddRange(userClaims);
            foreach (var userRole in userRoles)
            {
                claims.Add(new Claim(ClaimTypes.Role, userRole));
                var role = await _roleManager.FindByNameAsync(userRole);

                if (role != null)
                {
                    var roleClaims = await _roleManager.GetClaimsAsync(role);

                    foreach (Claim roleClaim in roleClaims)
                    {
                        claims.Add(roleClaim);
                    }
                }
            }
            return(claims);
        }
示例#3
0
        private static async Task CreateAdminUser()
        {
            //creating an admin user who could maintain the web app
            var adminUser = new LiteForumUser
            {
                UserName = _configuration.GetSection("AppSettings")["AdminUsername"],
                Email    = _configuration.GetSection("AppSettings")["AdminEmail"]
            };

            string userPassword = _configuration.GetSection("AppSettings")["AdminPassword"];
            var    user         = await _userManager.FindByEmailAsync(adminUser.Email);

            if (user == null)
            {
                var createAdminUser = await _userManager.CreateAsync(adminUser, userPassword);

                if (createAdminUser.Succeeded)
                {
                    //here we tie the new user to the "Admin" role
                    await _userManager.AddToRoleAsync(adminUser, AppConstants.String.Roles.Admin);
                }
            }
        }