コード例 #1
0
        private async Task <string> GetToken(AllergoUser user)
        {
            var utcNow = DateTime.UtcNow;

            var claims = new List <Claim>
            {
                new Claim(JwtRegisteredClaimNames.UniqueName, user.UserName),
                new Claim(JwtRegisteredClaimNames.Jti, user.Id.ToString()),
                new Claim(JwtRegisteredClaimNames.Iat, utcNow.ToString(CultureInfo.InvariantCulture))
            };

            var userRoles = await _userManager.GetRolesAsync(user);

            foreach (var role in userRoles)
            {
                claims.Add(new Claim("role", role));
            }

            var signingKey         = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration.GetValue <string>("Tokens:Key")));
            var signingCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256);

            var jwt = new JwtSecurityToken(
                signingCredentials: signingCredentials,
                claims: claims,
                notBefore: utcNow,
                expires: utcNow.AddSeconds(_configuration.GetValue <int>("Tokens:Lifetime"))
                );

            return(new JwtSecurityTokenHandler().WriteToken(jwt));
        }
コード例 #2
0
        public async Task <string> Register(RegisterViewModel model)
        {
            _authValidationService.ValidateRegisterViewModel(model);

            var newUser = new AllergoUser
            {
                UserName  = model.UserName,
                Email     = model.Email,
                FirstName = model.FirstName,
                LastName  = model.LastName
            };

            var result = await _userManager.CreateAsync(newUser, model.Password);

            await _userManager.AddToRoleAsync(newUser, AllergoRoleNames.Patient);

            if (!result.Succeeded)
            {
                throw new BadRequestException(
                          $"An error occured while registering user: {result.Errors.Select(x => x.Description).Join()}");
            }

            await _signInManager.SignInAsync(newUser, false);

            return(await GetToken(newUser));
        }
コード例 #3
0
        private static void AddIfNotExists(AllergoUser user, UserManager <AllergoUser> userManager)
        {
            if (userManager.FindByNameAsync(user.UserName).Result == null)
            {
                IdentityResult result = userManager.CreateAsync(user, "Haslo123.").Result;

                if (result.Succeeded)
                {
                    userManager.AddToRoleAsync(user, user.UserName.ToUpper()).Wait();
                }
            }
        }
コード例 #4
0
ファイル: UserService.cs プロジェクト: gmackiewicz/Allergo
        private async Task SetRoleForUserAsync(AllergoUser user, string roleId)
        {
            var role = await _roleManager.FindByIdAsync(roleId);

            if (await _userManager.IsInRoleAsync(user, role.Name))
            {
                return;
            }

            var currentRoles = await _userManager.GetRolesAsync(user);

            await _userManager.RemoveFromRolesAsync(user, currentRoles);

            await _userManager.AddToRoleAsync(user, role.Name);
        }
コード例 #5
0
        public static void SeedUsers(UserManager <AllergoUser> userManager)
        {
            var adminUser = new AllergoUser
            {
                UserName           = "******",
                NormalizedUserName = "******",
                Email           = "*****@*****.**",
                NormalizedEmail = "*****@*****.**",
                FirstName       = "Admin",
                LastName        = "Adminowski",
            };

            var doctorUser = new AllergoUser
            {
                UserName           = "******",
                NormalizedUserName = "******",
                Email           = "*****@*****.**",
                NormalizedEmail = "*****@*****.**",
                FirstName       = "Doktor",
                LastName        = "Doktorski",
            };

            var patientUser = new AllergoUser
            {
                UserName           = "******",
                NormalizedUserName = "******",
                Email           = "*****@*****.**",
                NormalizedEmail = "*****@*****.**",
                FirstName       = "Pacjent",
                LastName        = "Cierpliwy",
            };

            AddIfNotExists(adminUser, userManager);
            AddIfNotExists(doctorUser, userManager);
            AddIfNotExists(patientUser, userManager);
        }