Ejemplo n.º 1
0
        public async Task <UserLoginReturnModel> Login(UserLoginModel userLoginModel)
        {
            var user = await _userManager.FindByEmailAsync(userLoginModel.Email.ToLower());

            var userToReturn = new UserLoginReturnModel()
            {
                Succeeded = false,
                Errors    = new Dictionary <string, List <string> >()
            };
            //Error message for invalid username or password
            var list = new List <string>()
            {
                "Invalid username or password"
            };

            //User not found by email
            if (user == null)
            {
                userToReturn.Errors.Add("Error", list);
                return(userToReturn);
            }
            //If user exists, check password
            var result = await _signInManager.CheckPasswordSignInAsync(user, userLoginModel.Password, false);

            if (!result.Succeeded)
            {
                //Wrong password, return error
                userToReturn.Errors.Add("Error", list);
                return(userToReturn);
            }
            //If OK sign in user
            var appUser = await _userManager.Users.FirstOrDefaultAsync(u => u.Email == userLoginModel.Email.ToLower());

            userToReturn = _mapper.Map <UserLoginReturnModel>(appUser);
            var roles = await _userManager.GetRolesAsync(appUser);

            userToReturn.Succeeded = true;
            userToReturn.Token     = _tokenGeneration.GenerateJwtToken(appUser);
            userToReturn.Role      = roles.Contains("Applicant") ? 0 : 1;
            return(userToReturn);
        }
Ejemplo n.º 2
0
        public async Task <UserLoginReturnModel> Login(UserLoginModel userLoginModel)
        {
            var user = await _userManager.FindByEmailAsync(userLoginModel.Email.ToLower());

            var userToReturn = new UserLoginReturnModel();

            //User not found by email
            if (user == null)
            {
                userToReturn.Errors["Error"].Add("Invalid email or password");
                return(userToReturn);
            }
            //If user exists, check password
            var result = await _signInManager.CheckPasswordSignInAsync(user, userLoginModel.Password, false);

            if (!result.Succeeded)
            {
                //Wrong password, return error
                userToReturn.Errors["Error"].Add("Invalid email or password.");
                return(userToReturn);
            }
            //If OK generate token
            userToReturn = _mapper.Map <UserLoginReturnModel>(user);
            var roles = await _userManager.GetRolesAsync(user);

            //Check if it is first-time login
            if (user.ModifiedDate != null)
            {
                userToReturn.NewUser = false;
            }
            else
            {
                userToReturn.NewUser = true;
            }

            userToReturn.Succeeded = true;
            userToReturn.Token     = await _tokenGeneration.GenerateJwtToken(user);

            userToReturn.Role = roles.Contains(RoleConstants.APPLICANT) ? (int)UserType.APPLICANT : roles.Contains(RoleConstants.CLIENT) ? (int)UserType.CLIENT : (int)UserType.ADMIN;
            return(userToReturn);
        }