コード例 #1
0
        public async Task <IActionResult> LoginAsync([FromBody] LoginDTO model)
        {
            UserManagerResponse response;

            if (!ModelState.IsValid)
            {
                response = CreateResponse.Create("Some model properties are not valid", false, null);

                return(BadRequest(response));
            }

            var user = await _userManager.FindByEmailAsync(model.Email);

            if (user == null)
            {
                response = CreateResponse.Create("User does not exist", false, null);

                return(BadRequest(response));
            }

            var signin = await _signInManager.PasswordSignInAsync(model.Email, model.Password, isPersistent : model.RememberMe, false);

            if (signin.Succeeded)
            {
                var token = JwtTokenConfig.GetToken(user, _configuration);

                response = CreateResponse.Create(token, true, null);

                return(Ok(response));
            }

            response = CreateResponse.Create("Invalid credentials!", false, null);

            return(Unauthorized(response));
        }
コード例 #2
0
        public async Task <IActionResult> Login(UserToLoginDTO model)
        {
            if (ModelState.IsValid)
            {
                //get user by email
                var user = _userManager.Users.FirstOrDefault(x => x.Email == model.Email);

                //check if user exist
                if (user == null)
                {
                    return(BadRequest("User does not exist"));
                }

                var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, false, false);

                if (result.Succeeded)
                {
                    var getToken = JwtTokenConfig.GetToken(user, _config);
                    return(Ok(getToken));
                }
                return(Unauthorized("Invalid credentials"));
            }

            return(BadRequest(model));
        }
コード例 #3
0
        public async Task <Response <string> > Login(string username, string password)
        {
            var response = new Response <string>();

            try
            {
                var user = await _ctx.Users.FirstOrDefaultAsync(c => c.Username.ToLower() == username.ToLower());

                if (user == null)
                {
                    response.Message = "User not found.";
                    response.Success = false;
                    return(response);
                }
                var passwordCheck = VerifyPasswordHash(password, user.PasswordHash, user.PasswordSalt);
                if (!passwordCheck)
                {
                    response.Success = false;
                    response.Message = "Invalid username or password";
                    return(response);
                }
                response.Data    = JwtTokenConfig.GetToken(user, _config);
                response.Message = "Logged in successfully";
            }
            catch (Exception ex)
            {
                response.Message = ex.Message;
                return(response);
            }
            return(response);
        }
コード例 #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="userToLoginDto"></param>
        /// <returns></returns>
        public async Task <string> LoginUser(UserToLoginDto userToLoginDto)
        {
            var user = await GetUserByEmail(userToLoginDto.Email);

            var roles = await GetUserRoles(user);

            await _signManager.SignInAsync(user, false);

            return(JwtTokenConfig.GetToken(user, _config, roles));
        }
コード例 #5
0
        public async Task <IActionResult> Login([FromBody] LoginDto model)
        {
            try
            {
                // get device ip
                var currentIp = Utility.getMac();
                Console.WriteLine(currentIp);
                //var isSignedIn = _signInManager.IsSignedIn(User);

                var user = _userManager.Users.FirstOrDefault(x => x.Email == model.Email);
                if (user == null)
                {
                    return(BadRequest("User does not exist"));
                }

                var activityResponse = await _logActivityRepository.GetLogActivity(user.Id);

                if (activityResponse == null)
                {
                    return(BadRequest("No registered user"));
                }

                if (activityResponse.DeviceIp == currentIp && activityResponse.IsActive)
                {
                    return(BadRequest("Already Signed In"));
                }

                // if the user has previously logged in on current device but logged out
                if (activityResponse.DeviceIp == currentIp && !activityResponse.IsActive)
                {
                    activityResponse.LoginTime = DateTime.Now;
                    activityResponse.IsActive  = true;

                    await _logActivityRepository.UpdateLogActivity(activityResponse);
                }
                else
                {
                    return(BadRequest("You are already logged in on another device. Do you want to logout?"));
                }
                var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, false, false);

                if (result.Succeeded)
                {
                    var getToken = JwtTokenConfig.GetToken(user, _config);
                    return(Ok(new { message = "Logged in successfully", token = getToken }));
                }
                return(Unauthorized("Incorrect username or Password"));
            }
            catch (Exception e)
            {
                _logger.LogError(e.Message);
                return(BadRequest("An error occured"));
            }
        }