示例#1
0
        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));
     }
 }
示例#3
0
        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);
        }
示例#6
0
        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)));
            }
        }
示例#7
0
文件: LoginForm.cs 项目: wuearl/imPC
        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;
                    }));
                }
            });
        }