Example #1
0
        public async Task <Dto.JsonResponseModel <JsonWebTokenModal> > Login(LoginDto model)
        {
            var checkService = new SignatureCheckService(_configuration);

            if (!checkService.Verify(Request.Headers, model))
            {
                return(new Dto.JsonResponseModel <JsonWebTokenModal>
                {
                    Data = null,
                    Msg = "Signature error",
                    Status = Dto.JsonResponseStatus.AuthFail
                });
            }


            var appUser = _userManager.Users.SingleOrDefault(r => r.Email == model.Email);
            var result  = await _signInManager.PasswordSignInAsync(appUser, model.Password, false, false);

            if (result.Succeeded)
            {
                if (!appUser.EmailConfirmed)
                {
                    return(new Dto.JsonResponseModel <JsonWebTokenModal>
                    {
                        Data = null,
                        Msg = "Account is not actived",
                        Status = Dto.JsonResponseStatus.AccountError
                    });
                }


                HttpContext.Response.StatusCode = (int)System.Net.HttpStatusCode.OK;

                return(new Dto.JsonResponseModel <JsonWebTokenModal> {
                    Msg = "Login success!",
                    Data = new JsonWebTokenModal()
                    {
                        Token = GenerateJwtToken(model.Email, appUser),
                        UserName = appUser.UserName
                    },
                    Status = Dto.JsonResponseStatus.Success
                });
            }

            //HttpContext.Response.StatusCode = (int)System.Net.HttpStatusCode.Unauthorized;

            return(new Dto.JsonResponseModel <JsonWebTokenModal>
            {
                Data = null,
                Msg = "Login Failed, password or useremail wrong",
                Status = Dto.JsonResponseStatus.RequestError
            });
        }
Example #2
0
        public async Task <Dto.JsonResponseModel> Register(RegisterDto model)
        {
            var checkService = new SignatureCheckService(_configuration);

            if (!checkService.Verify(Request.Headers, model))
            {
                return(new Dto.JsonResponseModel <Dto.JsonResponseModel>
                {
                    Data = null,
                    Msg = "Signature error",
                    Status = Dto.JsonResponseStatus.AuthFail
                });
            }

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

            if (_userManager.Users.FirstOrDefault(o => o.Email == user.Email) != null)
            {
                return(new Dto.JsonResponseModel
                {
                    Msg = "email depulicated",
                    Status = Dto.JsonResponseStatus.RequestError
                });
            }

            if (_userManager.Users.FirstOrDefault(o => o.UserName == user.UserName) != null)
            {
                return(new Dto.JsonResponseModel
                {
                    Msg = "name depulicated",
                    Status = Dto.JsonResponseStatus.RequestError
                });
            }

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

            if (result.Succeeded)
            {
                HttpContext.Response.StatusCode = (int)System.Net.HttpStatusCode.OK;

                // force user to confirm email, generate token
                var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                // generate url
                var callbackUrl = Url.ActionLink("Confirm", "Account", new RouteValueDictionary {
                    { "id", user.Id }, { "token", token }
                }, "http");
                var emailService = new EmailService(_configuration);

                emailService.SendConfirmEmail(user, callbackUrl);

                return(new Dto.JsonResponseModel
                {
                    Msg = $"Need confirm the email address",
                    Status = Dto.JsonResponseStatus.Success
                });
            }
            return(new Dto.JsonResponseModel
            {
                Msg = $"Register failed, {result.Errors.First().Description}",
                Status = Dto.JsonResponseStatus.RequestError
            });
        }