public async Task <ActionResult <AuthResponse> > LoginPassword([FromBody] LoginPasswordModel inputModel) { if (InvalidModelState(out var invalidResponse)) { return(invalidResponse); } var reasonResult = await _userManager.LoginWithPasswordAsync(inputModel); return(BuildResponse(reasonResult)); }
public async Task <IActionResult> LoginPasswordAsync([FromBody] LoginPasswordModel model) { try { return(Ok(await _service.LoginPasswordAsync(model.Email, model.Password))); } catch (EmailNotFoundException ex) { return(NotFound(ex.Message)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public async Task <ReasonResult <AuthResponse> > LoginWithPasswordAsync(LoginPasswordModel inputModel) { var user = await _userManager.FindByEmailAsync(inputModel.Email); if (user != null) { var signInResult = await _signInManager.CheckPasswordSignInAsync(user, inputModel.Password, lockoutOnFailure : true); if (signInResult.Succeeded) { await _userManager.RemoveAuthenticationTokenAsync(user, AuthSettings.RefreshTokenProvider, AuthSettings.RefreshTokenName); string newRefreshToken = await _userManager.GenerateUserTokenAsync(user, AuthSettings.RefreshTokenProvider, AuthSettings.RefreshTokenName); await _userManager.SetAuthenticationTokenAsync(user, AuthSettings.RefreshTokenProvider, AuthSettings.RefreshTokenName, newRefreshToken); string accessToken = _jwtGenerator.GenerateToken(user, out var expires); var output = new AuthResponse(accessToken, newRefreshToken, expires); return(ReasonResult <AuthResponse> .Success(output)); } else { var reasons = new List <Reason>(); if (signInResult.IsLockedOut) { reasons.Add(new Reason("LockedOut", "User is locked out")); } if (signInResult.IsNotAllowed) { reasons.Add(new Reason("IsNotAllowed", "User is not allowed to sign in")); } if (!signInResult.IsLockedOut && !signInResult.IsNotAllowed && !signInResult.RequiresTwoFactor) { reasons.Add(new Reason("InvalidPassword", "Password does not match")); } return(ReasonResult <AuthResponse> .BadRequest(reasons)); } } return(ReasonResult <AuthResponse> .BadRequest(new Reason[] { new Reason("UserNotFound", "Cannot find User") })); }
public async Task LoginPassword_WrongEmailWithPassword_ReturnsNotFoundObjectResult() { // Arrange const string email = "*****@*****.**"; const string password = "******"; var loginModel = new LoginPasswordModel { Email = email, Password = password }; _service.Setup(s => s.LoginPasswordAsync(email, password)) .Throws <EmailNotFoundException>(); var controller = new LoginController(_service.Object); // Act var result = await controller.LoginPasswordAsync(loginModel) as ObjectResult; // Assert Assert.IsInstanceOf <NotFoundObjectResult>(result); }
public async Task LoginPassword_EmailWithPassword_ReturnsUser() { // Arrange var id = Guid.NewGuid(); const string username = "******"; const string email = "*****@*****.**"; const string password = "******"; const string jwt = "jwt"; var loginModel = new LoginPasswordModel { Email = email, Password = password }; var user = new User { Id = id, Username = username, Email = email, Token = jwt }; _service.Setup(s => s.LoginPasswordAsync(email, password)) .ReturnsAsync(user); var controller = new LoginController(_service.Object); // Act var result = await controller.LoginPasswordAsync(loginModel) as ObjectResult; // Assert Assert.IsNotNull(result); Assert.IsInstanceOf <OkObjectResult>(result); Assert.AreEqual(user, result.Value); }
public async Task <IActionResult> Index(LoginPasswordModel model) { LogInfo("[LOGIN-TRY:{UserLogin}] Tentative de connexion de {UserLogin}", model.Login); if (!ModelState.IsValid) { LogWarning("[LOGIN-FAIL:{UserLogin}] Echec de connexion de {UserLogin} : ModelState invalide ({@ModelState})", model.Login, ModelState); return(View()); } var dbuser = _context.Utilisateurs.Include(u => u.Centre).Where(u => u.Login == model.Login).SingleOrDefault(); if (dbuser == null) { LogWarning("[LOGIN-FAIL:{UserLogin}] Echec de connexion de {UserLogin} : Utilisateur inconnu", model.Login); ModelState.AddModelError("", "Echec de la connexion. Vérifier votre login et votre mot de passe"); return(View()); } if (!dbuser.TestPassword(model.Password)) { LogWarning("[LOGIN-FAIL:{UserLogin}] Echec de connexion de {UserLogin} : Mot de passe invalide", model.Login); ModelState.AddModelError("", "Echec de la connexion. Vérifier votre login et votre mot de passe"); return(View()); } var claims = new List <Claim> { new Claim(ClaimTypes.Name, model.Login), new Claim(ClaimTypes.Authentication, "true"), }; if (dbuser.Centre != null) { claims.Add(new Claim(ClaimTypes.Role, "BasicAdmin", ClaimValueTypes.String)); } else { claims.Add(new Claim(ClaimTypes.Role, "SuperAdmin", ClaimValueTypes.String)); } var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(identity)); LogInfo("[LOGIN-SUCCESS:{UserLogin}] Succès de la connexion de {UserLogin}", model.Login); string returnUrl = null; if (!string.IsNullOrEmpty(model.ReturnUrl)) { if (Uri.TryCreate(model.ReturnUrl, UriKind.Relative, out Uri uri) && !uri.IsAbsoluteUri) { returnUrl = model.ReturnUrl; } } if (!string.IsNullOrEmpty(returnUrl)) { return(Redirect(returnUrl)); } else { return(RedirectToAction(nameof(Index))); } }
private void Login() { skinButton1.Enabled = false; if (skinTextBox1.Text.Length < 1) { MessageBox.Show("请填写手机号或者畅聊号"); skinButton1.Enabled = true; return; } if (skinTextBox2.Text.Length < 1) { MessageBox.Show("请填写密码"); skinButton1.Enabled = true; return; } skinButton1.Text = "登陆中..."; LoginPasswordModel model = new LoginPasswordModel(); model.way_type = 1; model.mobile = skinTextBox1.Text; model.password = skinTextBox2.Text; HttpUitls.Instance.get <LoginPasswordReciveModel>("register/loginPassword", model, (json) => { if (json.code == 200) { SettingMenager.shard.token = json.data.token; EaseHelper.shard.login(json.data.username, json.data.password, (err) => { if (err.errorCode == EaseMobLib.EMErrorCode.EM_NO_ERROR) { SettingMenager.shard.userID = json.data.username; skinButton1.BeginInvoke(new EventHandler((s, er) => { skinButton1.Text = "登录成功"; })); HttpUitls.Instance.get <UserInfoReciveModel>("user/userInfo", new LoginedSendModel(), (js) => { //需要存东西 SettingMenager.shard.username = js.data.db.user_name; SettingMenager.shard.phone = js.data.db.mobile; SettingMenager.shard.avatar = js.data.db.portrait; SettingMenager.shard.idCard = js.data.db.id_card; new Thread(new ThreadStart(() => { _ = DBHelper.Instance; })).Start(); this.BeginInvoke(new EventHandler((s, er) => { this.Close(); })); Thread t = new Thread(new ThreadStart(GoToLogin)); t.SetApartmentState(ApartmentState.STA); t.Start(); }, (s) => { if (s > 500 && s < 503) { SettingMenager.shard.token = null; skinButton1.BeginInvoke(new EventHandler((st, er) => { skinButton1.Text = "登录"; skinButton1.Enabled = true; })); } }); } else { SettingMenager.shard.token = null; skinButton1.BeginInvoke(new EventHandler((s, er) => { skinButton1.Text = "登录"; skinButton1.Enabled = true; MessageBox.Show("聊天服务器登录失败"); })); } }); } else { SettingMenager.shard.token = null; skinButton1.BeginInvoke(new EventHandler((s, err) => { skinButton1.Text = "登录"; skinButton1.Enabled = true; MessageBox.Show(json.message); })); } }, (ss) => { if (ss < 503 && ss > 500) { SettingMenager.shard.token = null; skinButton1.BeginInvoke(new EventHandler((s, err) => { skinButton1.Text = "登录"; skinButton1.Enabled = true; })); } }); }