Пример #1
0
        public async Task <IActionResult> Register([FromBody] RegisterDto model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Bad input"));
            }

            var user = new MoDUser
            {
                UserName    = model.Email,
                Email       = model.Email,
                FirstName   = model.FirstName,
                LastName    = model.LastName,
                PhoneNumber = model.PhoneNumber,
                IsEnabled   = false
            };

            var result = await userManager.CreateAsync(user, model.Password);

            if (result.Succeeded)
            {
                var roleName = roleManager.Roles.FirstOrDefault(r =>
                                                                r.Id == model.RoleId.ToString()).NormalizedName;
                var result1 = await userManager.AddToRoleAsync(user, roleName);

                if (result1.Succeeded)
                {
                    return(Created("Register", model.Email));
                }
            }
            return(BadRequest(result.Errors));
        }
Пример #2
0
        private async Task <TokenDto> GenerateJwtToken(string email,
                                                       MoDUser user)
        {
            var roles = await userManager.GetRolesAsync(user);

            var role = roleManager.Roles.SingleOrDefault(
                r => r.Name == roles.SingleOrDefault());

            var claims = new List <Claim>
            {
                new Claim(JwtRegisteredClaimNames.Sub, email),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                new Claim(ClaimTypes.NameIdentifier, user.Id),
                new Claim(ClaimTypes.Role, role.Name)
            };

            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["JwtKey"]));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            //recommended is 5 mins
            var expires = DateTime.Now.AddDays(
                Convert.ToDouble(configuration["JwtExpireDays"]));

            var token = new JwtSecurityToken(
                configuration["JwtIssuer"],
                configuration["JwtIssuer"],
                claims,
                expires: expires,
                signingCredentials: creds
                );
            //cut these 2 lines
            //var roles = await userManager.GetRolesAsync(user);
            //var roleId = roleManager.Roles.SingleOrDefault(r => r.Name == roles.SingleOrDefault()).Id;
            var response = new TokenDto
            {
                Email = email,
                Token = new JwtSecurityTokenHandler().WriteToken(token),
                Role  = Convert.ToInt32(role.Id)
                        //RoleId = Convert.ToInt32(roleId)
            };

            return(response);
        }