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 }); }
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 }); }