private async Task <IdentityResult> CreateAccountAsync(SignUpDto signUpDto)
        {
            SwmsUser swmsUser = new SwmsUser();

            swmsUser.Email    = signUpDto.Email;
            swmsUser.UserName = signUpDto.UserName;
            return(await _userManager.CreateAsync(swmsUser, signUpDto.Password));
        }
Пример #2
0
        public async Task <ActionResult <SwmsUser> > Get(long id)
        {
            SwmsUser swmsUser = await _userManager.FindByIdAsync(id.ToString());

            if (swmsUser == null)
            {
                return(NotFound());
            }
            return(swmsUser);
        }
Пример #3
0
        public async Task <IActionResult> Delete(long id)
        {
            SwmsUser swmsUser = await _userManager.FindByIdAsync(id.ToString());

            if (swmsUser == null)
            {
                return(NotFound());
            }

            await _userManager.DeleteAsync(swmsUser);

            return(NoContent());
        }
        async Task <object> ISwmsAuthorizer.Authenticate(ControllerBase controllerBase, LoginDto loginDto)
        {
            SignInResult signInResult = await SignInAsync(loginDto);

            if (!signInResult.Succeeded)
            {
                return(controllerBase.BadRequest(signInResult));
            }

            SwmsUser appUser = await _userManager.FindByNameAsync(loginDto.UserName);

            return(_jwtGenerator.GenerateJwtToken(appUser));
        }
Пример #5
0
        async Task <ActionResult <SwmsUser> > IUserEmailConfirmer.RequestConfirmationEmail(ControllerBase controllerBase,
                                                                                           RequestConfirmationEmailDto requestConfirmationEmailDto)
        {
            SwmsUser swmsUser = await _userManager.FindByEmailAsync(requestConfirmationEmailDto.Email);

            if (swmsUser == null)
            {
                return(controllerBase.NotFound());
            }
            string token = await _userManager.GenerateEmailConfirmationTokenAsync(swmsUser);

            string           confirmEmailUrl  = CreateConfirmationUrl(controllerBase, swmsUser.Id, token);
            SendEmailRequest sendEmailRequest = CreateConfirmationEmailRequest(confirmEmailUrl, swmsUser);
            await _emailSender.SendEmailAsync(sendEmailRequest);

            return(controllerBase.Ok());
        }
        public object GenerateJwtToken(SwmsUser user)
        {
            List <Claim> claims = new List <Claim>
            {
                new Claim(JwtRegisteredClaimNames.Sub, user.Email),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())
            };

            string issuer                           = _jwtSettings.Issuer;
            string audience                         = issuer;
            SymmetricSecurityKey key                = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtSettings.Secret));
            DateTime             expires            = DateTime.Now.AddDays(Convert.ToDouble(_jwtSettings.ExpireDays));
            SigningCredentials   signingCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            JwtSecurityToken     token              = new JwtSecurityToken(issuer, audience, claims, null, expires, signingCredentials);

            return(new JwtSecurityTokenHandler().WriteToken(token));
        }
Пример #7
0
        async Task <ActionResult <SwmsUser> > IUserEmailConfirmer.ConfirmEmail(ControllerBase controllerBase,
                                                                               ConfirmEmailDto confirmEmailDto)
        {
            SwmsUser swmsUser = await _userManager.FindByIdAsync(confirmEmailDto.UserId.ToString());

            if (swmsUser == null)
            {
                return(controllerBase.NotFound());
            }

            IdentityResult identityResult = await _userManager.ConfirmEmailAsync(swmsUser, confirmEmailDto.Token);

            if (identityResult.Succeeded)
            {
                return(controllerBase.Ok());
            }

            return(controllerBase.BadRequest());
        }
Пример #8
0
        private static SendEmailRequest CreateConfirmationEmailRequest(string confirmEmailUrl, SwmsUser swmsUser)
        {
            string           encodedUrl       = HtmlEncoder.Default.Encode(confirmEmailUrl);
            string           message          = $"Please confirm your account by <a href='{encodedUrl}'>clicking here</a>.";
            SendEmailRequest sendEmailRequest = new SendEmailRequest(swmsUser.Email, "Confirm your email", message);

            return(sendEmailRequest);
        }
Пример #9
0
        public async Task <IActionResult> Put(SwmsUser swmsUser)
        {
            await _userManager.UpdateAsync(swmsUser);

            return(NoContent());
        }