Example #1
0
        public async Task Login([FromForm] string username, [FromForm] string password)
        {
            //try
            //{


            var user = await ApplicationUser.LoginGet(_userManager, username, password);

            //}
            //catch(Exception e)
            //{
            //    var asd = 1;
            //}
            if (user == null)
            {
                Response.StatusCode = 400;
                await Response.WriteAsync("Invalid username or password.");

                return;
            }
            var identity = AuthJWT.GetIdentity(user);

            var encodedJwt    = AuthJWT.GenerateMainToken(identity);
            var encodedRefJwt = AuthJWT.GenerateRefreshToken();
            await user.SetRefreshToken(_db, encodedRefJwt);

            var response = new
            {
                access_token  = encodedJwt,
                refresh_token = encodedRefJwt,
                username      = identity.Name
            };

            // сериализация ответа
            Response.ContentType = "application/json";
            await Response.WriteAsync(JsonConvert.SerializeObject(response, new JsonSerializerSettings {
                Formatting = Formatting.Indented
            }));
        }
Example #2
0
        public async Task Register([FromForm] RegisterModel model)//, string confirmPassword
        {
            if (!ModelState.IsValid)
            {
                Response.StatusCode = 400;
                return;
            }

            var user = new ApplicationUser {
                UserName = model.Email, Email = model.Email
            };

            user.Validation(new ValidationInput());
            var result = await _userManager.CreateAsync(user, model.Password);

            if (!result.Succeeded)
            {
                Response.StatusCode = 404;
                return;
            }


            var identity = AuthJWT.GetIdentity(user);

            if (identity == null)
            {
                Response.StatusCode = 500;
                // await Response.WriteAsync("Invalid username or password.");
                return;
            }

            var encodedJwt    = AuthJWT.GenerateMainToken(identity);
            var encodedRefJwt = AuthJWT.GenerateRefreshToken();
            await user.SetRefreshToken(_db, encodedRefJwt);


            //--------этот блок для подтверждения почты
            //var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
            //var callbackUrl = Url.Action(
            //    "ConfirmEmail",
            //    "Account",
            //    new { userId = user.Id, code = code },
            //    protocol: HttpContext.Request.Scheme);
            //EmailService emailService = new EmailService();
            //await emailService.SendEmailAsync(model.Email, "Confirm your account",
            //    $"Подтвердите регистрацию, перейдя по ссылке: <a href='{callbackUrl}'>link</a>");

            var response = new
            {
                access_token  = encodedJwt,
                refresh_token = encodedRefJwt,
                username      = identity.Name
            };


            // сериализация ответа
            Response.ContentType = "application/json";

            await Response.WriteAsync(JsonConvert.SerializeObject(response, new JsonSerializerSettings {
                Formatting = Formatting.Indented
            }));
        }