예제 #1
0
        public async Task <IActionResult> Index(LoginViewModel LoginViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View(LoginViewModel));
            }

            // Connexion par adresse email ou nom d'utilisateur
            Person UserToLog;

            // Si une adresse email est détectée
            if (IsValidEmail(LoginViewModel.Email))
            {
                // Récupération de l'utilisateur par adresse email
                UserToLog = await _userManager.FindByEmailAsync(LoginViewModel.Email);
            }
            else
            {
                // Récupération de l'utilisateur par nom d'utilisateur
                UserToLog = await _userManager.FindByNameAsync(LoginViewModel.Email);
            }

            // Connexion de l'utilisateur
            var TaskResult = await _signInManager.PasswordSignInAsync(UserToLog, LoginViewModel.Password, LoginViewModel.RememberMe, true);

            if (TaskResult.Succeeded)
            {
                // Redirection vers l'action Home par défaut
                return(Redirect("/"));
            }
            else if (TaskResult.IsDisabled)
            {
                ModelState.AddModelError(string.Empty, "Ce compte a été désactivé");
                return(View(LoginViewModel));
            }
            else if (TaskResult.IsLockedOut)
            {
                ModelState.AddModelError(string.Empty, "Ce compte a temporairement été bloqué");
                return(View(LoginViewModel));
            }
            else if (TaskResult.DoesNotExists)
            {
                ModelState.AddModelError(string.Empty, "Ce compte n'existe pas");
                return(View(LoginViewModel));
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Vos identifiants sont incorrects");
                return(View(LoginViewModel));
            }
        }