Example #1
0
        public async Task <IActionResult> Login(UserToLoginDto userToLoginDto)
        {
            var userFromRepo = await _authRepository.Login(userToLoginDto.Username.ToLower(), userToLoginDto.Password);

            if (userFromRepo == null)
            {
                return(Unauthorized());
            }

            var claims = new []
            {
                new Claim(ClaimTypes.NameIdentifier, userFromRepo.Id.ToString()),
                new Claim(ClaimTypes.Name, userFromRepo.Name)
            };

            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.GetSection("AppSettings:Token").Value));

            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);

            var tokenDescriptor = new SecurityTokenDescriptor()
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(1),
                SigningCredentials = creds
            };

            var tokenHandler = new JwtSecurityTokenHandler();

            var token = tokenHandler.CreateToken(tokenDescriptor);

            return(Ok(new {
                token = tokenHandler.WriteToken(token)
            }));
        }
Example #2
0
        public async Task <IActionResult> Login([FromBody] UserToLoginDto userToLoginDto)
        {
            var userLoginResponse = await _authRepo.Login(userToLoginDto);

            if (userLoginResponse == null)
            {
                return(Unauthorized());
            }
            var tokenHandler = new JwtSecurityTokenHandler();
            var key          = Encoding.ASCII.GetBytes(_config.GetSection("AppSettings:EncryptionKey").Value);

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[]
                {
                    new Claim(ClaimTypes.NameIdentifier, userLoginResponse.Id.ToString()),
                    new Claim(ClaimTypes.Name, userLoginResponse.Email)
                }),
                Expires            = DateTime.UtcNow.AddDays(1),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key),
                                                            SecurityAlgorithms.HmacSha512Signature)
            };

            var token       = tokenHandler.CreateToken(tokenDescriptor);
            var tokenString = tokenHandler.WriteToken(token);

            userLoginResponse.RefreshToken = tokenString;
            return(Ok(userLoginResponse));
        }
        public async Task <IActionResult> Login(UserToLoginDto userToLoginDto)
        {
            // provide the credentials to the Login method and if user doesn`t exist, then we return null.
            //var userFromRepo = await _authRepository.Login(userToLoginDto.Username.ToLower(), userToLoginDto.Password);

            var user = await _userManager.FindByNameAsync(userToLoginDto.Username);

            // Will get the user found by the username and it will compare the password, and then we say false as we dont need to lock out our user.
            var result = await _signInManager.CheckPasswordSignInAsync(user, userToLoginDto.Password, false);

            // If null return unauthorized
            if (result.Succeeded)
            {
                // This is used to retrieve the main photo, we mapp to UserForListDto
                var appUser = _mapper.Map <UserForListDto>(user);

                return(Ok(
                           new
                {
                    token = GenerateJwtToken(user).Result,
                    user = appUser     // this is what we return, so that we dont return the excesive information
                }));
            }

            return(Unauthorized());
        }
        private async void GoToHomePage(object sender, EventArgs args)
        {
            SessionServices sessionServices = new SessionServices();
            UserServices    userServices    = new UserServices();

            UserToLoginDto user = new UserToLoginDto()
            {
                Email    = email.Text,
                Password = password.Text
            };

            List <UserDto> u = await userServices.GetUserByEmailAsync(email.Text);

            register.IsEnabled = false;
            login.IsEnabled    = false;
            login.Text         = "Logging in...";
            string token = await sessionServices.CreateSessionAsync(user);

            if (token != "")
            {
                Application.Current.Properties["IdUser"] = u[0].ID;
                Application.Current.Properties["Token"]  = token;
                await Navigation.PushModalAsync(new MainPage(), true);
            }
            else
            {
                error.IsVisible    = true;
                register.IsEnabled = true;
                login.IsEnabled    = true;
                login.Text         = "Login";
            }
        }
Example #5
0
        /// <summary>
        /// Signs in user
        /// </summary>
        /// <param name="userToLogin">Username and password of user</param>
        /// <returns>Generated token or errors that occured during sign in process</returns>
        public async Task <IServiceResult <string> > LoginAsync(UserToLoginDto userToLogin)
        {
            try
            {
                UserModel user = (await _unitOfWork.Users.GetByExpressionAsync(x => x.UserName.ToLower() == userToLogin.Username.ToLower())).SingleOrDefault();

                if (user != null)
                {
                    SignInResult loginResult = await _signInManager.CheckPasswordSignInAsync(user, userToLogin.Password, false);

                    if (loginResult.Succeeded)
                    {
                        IList <string> usersRoles = await _signInManager.UserManager.GetRolesAsync(user);

                        using (IJsonWebTokenProvider jwtProvider = new JsonWebTokenProvider(_configuration))
                        {
                            string token = jwtProvider.GenerateJwtBearer(user, usersRoles);

                            return(new ServiceResult <string>(ResultType.Correct, token));
                        }
                    }
                }

                return(new ServiceResult <string>(ResultType.Error, new List <string> {
                    "Incorrect username or password"
                }));
            }
            catch (Exception e)
            {
                return(new ServiceResult <string>(ResultType.Unauthorized, new List <string> {
                    e.Message
                }));
            }
        }
Example #6
0
        public async Task <ActionResult <EUser> > Login([FromForm] UserToLoginDto userToLogin)
        {
            var loggedUser = await _userService.Login(userToLogin);

            // Check if user passed auth
            if (loggedUser.HasError)
            {
                // Show error to user
                ViewData["modalMessage"] = loggedUser.Message;

                return(View());
            }

            // Baking JWT token
            string token = _tokenService.CreateToken(loggedUser.UserId, loggedUser.UserRoles);

            // Storing token and username in cookies
            var cookieOptions = new CookieOptions()
            {
                HttpOnly = true,
                SameSite = SameSiteMode.Strict
            };

            // Constructing cookies to set
            var cookiesData = new Dictionary <string, string>()
            {
                ["X-Access-Token"] = token,
                ["X-Username"]     = userToLogin.Email
            };

            // Setting cookies from data
            _cookiesService.SetCookies(cookiesData, cookieOptions, Response);

            return(Redirect("/user/getAllUsers"));
        }
Example #7
0
        public async Task <IActionResult> Login(UserToLoginDto userToLoginDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var userToLog = await _repo.Login(userToLoginDto.Username.ToLower(), userToLoginDto.Password);

            if (userToLog == null)
            {
                return(Unauthorized());
            }
            var claims = new[]
            {
                new Claim(ClaimTypes.NameIdentifier, userToLog.Id.ToString()),
                new Claim(ClaimTypes.Name, userToLog.Username)
            };
            var key             = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration.GetSection("AppSettings:Token").Value));
            var creds           = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(1),
                SigningCredentials = creds
            };
            var tokenHandler = new JwtSecurityTokenHandler();
            var token        = tokenHandler.CreateToken(tokenDescriptor);
            var user         = _mapper.Map <UserForListDto>(userToLog);

            return(Ok(new
            {
                token = tokenHandler.WriteToken(token), //write out token into the response that we are sending back to the client
                user
            }));
        }
Example #8
0
        public async Task <IActionResult> Login(UserToLoginDto account)
        {
            var user = await _auth.Login(account.Username, account.Password);

            if (user == null)
            {
                return(Unauthorized("Sai tên đăng nhập hoặc mật khẩu, vui lòng thử lại"));
            }

            var claims = new[]
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
                new Claim(ClaimTypes.Name, user.Username),
                new Claim(ClaimTypes.Role, user.Role)
            };

            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.GetSection("AppSettings:Token").Value));

            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(1),
                SigningCredentials = creds
            };

            var tokenHandler = new JwtSecurityTokenHandler();
            var token        = tokenHandler.CreateToken(tokenDescriptor);

            return(Ok(new { token = tokenHandler.WriteToken(token) }));
        }
        async Task LoginToMenu()
        {
            var user = new UserToLoginDto
            {
                UserName = Login,
                Password = this.Password
            };

            try
            {
                LoggedUserDto loggedUser = await _api.Login(user);

                if (loggedUser.UserType == "P")
                {
                    ShowViewModel <MenuPoliceViewModel>();
                    _userDialogs.Alert("Logged as Police");
                }
                else if (loggedUser.UserType == "U")
                {
                    ShowViewModel <MenuViewModel>();
                    _userDialogs.Alert("Logged as User");
                }
                else
                {
                    ShowViewModel <MenuPoliceViewModel>();
                    //_userDialogs.Alert("Logged as Admin");
                }
            }
            catch (Exception ex)
            {
                _userDialogs.Alert(ex.Message);
            }
        }
Example #10
0
        public async Task <UserActionResult> Login(UserToLoginDto userToLogin)
        {
            var user = await GetUserByEmailAsync(userToLogin.Email);

            UserActionResult result;

            if (String.IsNullOrEmpty(userToLogin.Email) || String.IsNullOrEmpty(userToLogin.Password))
            {
                string messageFailed = $"Email and password must not be empty.";
                _logger.LogWarning(messageFailed);

                result = InitResult(0, null, true, messageFailed);

                return(result);
            }

            // if username not found
            if (user == null)
            {
                string messageFailed = $"Login failed for '{userToLogin.Email}'. Username or password incorrect.";
                _logger.LogWarning(messageFailed);

                result = InitResult(0, null, true, messageFailed);

                return(result);
            }

            using var hmac = new HMACSHA512(user.PasswordSalt);
            var computedHash = hmac.ComputeHash(Encoding.UTF8.GetBytes(userToLogin.Password));

            for (int i = 0; i < computedHash.Length; i++)
            {
                if (user.PasswordHash[i] != computedHash[i])
                {
                    string messageFailed = $"Login failed for '{userToLogin.Email}'. Username or password incorrect.";
                    _logger.LogWarning(messageFailed);

                    result = InitResult(0, null, true, $"Login failed for '{userToLogin.Email}'. Username or password incorrect.");

                    return(result);
                }
            }

            // Update login stats
            user.LastLoginUTC = DateTime.UtcNow;
            user.LoginsCount++;
            await _dbcontext.SaveChangesAsync();

            // Get user roles
            var userRoles = await GetUserRolesAsync(user.id);

            string messageSuccess = $"User '{userToLogin.Email}' has been succesfully logged in.";

            _logger.LogInformation(messageSuccess);

            result = InitResult(user.id, userRoles, false, messageSuccess);

            return(result);
        }
Example #11
0
        public async Task <IActionResult> Login(UserToLoginDto userToLogin)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var UserLogged = await _repo.Login(userToLogin.username, userToLogin.password);

            if (UserLogged == null)
            {
                return(Unauthorized()); // BadRequest("User or password doesn't match!");
            }
            // Payload: User info
            var Claims = new[]
            {
                //new Claim(ClaimTypes.NameIdentifier, UserLogged.Id.ToString()),
                new Claim(ClaimTypes.Name, UserLogged.UserName)
            };

            // Generate SSK Key
            var jkey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.GetSection("AppSetting:Token").Value));

            //Signing key
            var creds = new SigningCredentials(jkey, SecurityAlgorithms.HmacSha512Signature);

            //Token Descriptor
            var tokenDescription = new SecurityTokenDescriptor()
            {
                Expires            = DateTime.Now.AddDays(1),
                SigningCredentials = creds,
                Subject            = new ClaimsIdentity(Claims)
            };

            //     //  Finally create a Token
            //    var header = new JwtHeader(creds);

            //    //Some PayLoad that contain information about the  customer
            //    var payload = new JwtPayload
            //    {
            //        { "userId ", UserLogged.Id.ToString()},
            //        { "username", UserLogged.UserName},
            //    };

            //
            //    var secToken = new JwtSecurityToken(header, payload);

            var tokenHandler = new JwtSecurityTokenHandler();

            // var token = tokenHandler.WriteToken(secToken);
            var token = tokenHandler.CreateToken(tokenDescription);

            return(Ok(new {
                token = tokenHandler.WriteToken(token) //token
            }));
        }
        public async Task <IActionResult> Login(UserToLoginDto request)
        {
            ServiceResponse <string> response = await _authRepo.Login(request.Username, request.password);

            if (!response.Success)
            {
                return(BadRequest(response));
            }
            return(Ok(response));
        }
Example #13
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));
        }
Example #14
0
        public async Task <string> CreateSessionAsync(UserToLoginDto user)
        {
            GetClient();
            string session = "";
            HttpResponseMessage response = await client.PostAsJsonAsync("api/session/", user);

            if (response.IsSuccessStatusCode)
            {
                session = await response.Content.ReadAsStringAsync();
            }
            return(session);
        }
        public async Task <IActionResult> Login(UserToLoginDto userToLogin)
        {
            var user = await _userService.LoginUserAsync(userToLogin);

            if (user == null)
            {
                return(Unauthorized("Incorrect user or password"));
            }

            var token = _security.GenerateToken(user);

            return(Ok(token));
        }
Example #16
0
        public async Task <User> AddUser(UserToLoginDto user)
        {
            if (!(await _userRepository.UserExists(user.Username)))
            {
                var role = await _roleRepository.GetDefaultRole();

                var userTosave = _mapper.Map <User>(user);
                userTosave.Role = role;
                return(await _userRepository.AddUser(userTosave));
            }

            return(null);
        }
        public async Task <UserDto> CreateSession(UserToLoginDto userToLogin)
        {
            User user = await _context.Users.FirstOrDefaultAsync(x => x.Email == userToLogin.Email);

            if (user == null)
            {
                return(null);
            }
            else if (!VerifyPasswordHash(userToLogin.Password, user.PswHash, user.PswSalt))
            {
                return(null);
            }
            return(ConvertToUserDto(user));
        }
Example #18
0
        public async Task <IActionResult> Login(UserToLoginDto userToLogin)
        {
            //Pull user from db
            var dbUser = await this.authRepository.Login(userToLogin.Username.ToLower(), userToLogin.Password);

            Console.WriteLine();
            //Check if user exists
            if (dbUser == null)
            {
                return(Unauthorized());
            }
            var userContext = this.mapper.Map <UserContextDTO>(dbUser);

            userContext.Token = GenerateAuthToken(dbUser);

            //Write token into response sent to client
            return(Ok(userContext));
        }
Example #19
0
        public async Task <IActionResult> Login(UserToLoginDto userToLoginDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ResponseMessage.Message("Fill out all the files", ModelState)));
            }

            var checkUser = await _userRepository.GetUserByEmail(userToLoginDto.Email);

            if (checkUser == null)
            {
                return(BadRequest(ResponseMessage.Message("User does not exist")));
            }

            var token = await _userRepository.LoginUser(userToLoginDto);

            return(Ok(ResponseMessage.Message("You account has been logged-in", null, token)));
        }
Example #20
0
        public async Task <IActionResult> Login(UserToLoginDto model)
        {
            var user = await _authService.Login(model.Username, model.Password);

            try
            {
                var     key     = Encoding.ASCII.GetBytes(_configuration.GetSection("AppSettings:Token").Value);
                UserDto userDto = _mapper.Map <UserDto>(user);
                userDto.Token = HelperMethods.CreateJWT(key, userDto);


                return(Ok(userDto));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public async Task <IActionResult> Login(UserToLoginDto userToLogin)
        {
            var userInRepository = await _repository.Login(userToLogin.Username, userToLogin.Password);

            if (userInRepository == null)
            {
                return(Unauthorized());
            }

            var token = _signing.GenerateToken(new string[] {
                userInRepository.Id.ToString(),
                userInRepository.Username,
            });

            return(Ok(new
            {
                token = token
            }));
        }
        public async Task <IActionResult> Login(UserToLoginDto user)
        {
            var userToLogin = await _userManager.FindByNameAsync(user.UserName);

            var result = await _signInManager.CheckPasswordSignInAsync(userToLogin, user.Password, false);

            if (result.Succeeded)
            {
                var appUser = await _userManager.Users.FirstOrDefaultAsync(user => user.NormalizedUserName == userToLogin.UserName.ToUpper());

                var userToReturn = _mapper.Map <UserToReturn>(appUser);
                return(Ok(new {
                    token = GenerateToken(appUser).Result,
                    user = userToReturn
                }));
            }

            return(Unauthorized());
        }
Example #23
0
        public async Task <IActionResult> LoginAsync(UserToLoginDto userToLogin)
        {
            if (ModelState.IsValid)
            {
                IServiceResult <string> loginResult = await _authService.LoginAsync(userToLogin);

                if (loginResult.Result == ResultType.Correct)
                {
                    return(Ok(new { username = userToLogin.Username, token = loginResult.ReturnedObject }));
                }
                else
                {
                    return(Unauthorized(loginResult.Errors));
                }
            }
            else
            {
                return(BadRequest(ModelState.Values));
            }
        }
        public async Task <IActionResult> Login([FromBody] UserToLoginDto userToLoginDto)
        {
            // Check if user exists
            var user = await _userManager.FindByNameAsync(userToLoginDto.Username);

            var result = await _signInManager.CheckPasswordSignInAsync(user, userToLoginDto.Password, false);

            if (result.Succeeded)
            {
                var appuser = _mapper.Map <UserForListDto>(user);

                return(Ok(new
                {
                    token = GenerateJwtToken(user).Result,
                    user = appuser
                }));
            }

            return(Unauthorized());
        }
Example #25
0
        public async Task <IActionResult> Login([FromBody] UserToLoginDto user)
        {
            try
            {
                var userToLogin = await _userService.Login(user.Username, user.Password);

                if (userToLogin == null)
                {
                    return(BadRequest("Username or Password is wrong"));
                }

                _log.LogInformation($"Returning token {userToLogin.Token} for user with id {userToLogin.Id}");
                return(Ok(userToLogin));
            }
            catch (Exception ex)
            {
                _log.LogError($"Something went wrong: {ex}");
                return(StatusCode(500, ex));
            }
        }
        public IActionResult Login([FromBody] UserToLoginDto user)
        {
            if (user == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            var UserFromClient = Mapper.Map <Entities.User>(user);

            if (_messangerRepository.UserWithUsernameAndPasswordExist(UserFromClient))
            {
                var usertoreturnenumerable = _messangerRepository.GetLoggedUser(UserFromClient);
                var UserToReturn           = Mapper.Map <Models.LoggedUserToReturnDto>(usertoreturnenumerable);
                return(Ok(UserToReturn));
            }
            return(BadRequest());
        }
Example #27
0
        public async Task <IActionResult> Login(UserToLoginDto userToLoginDto)
        {
            // check in DB if user exists
            var userFromRepo = await _repo.Login(userToLoginDto.Username.ToLower(), userToLoginDto.Password);   // I am storing usernames in DB lowercased

            if (userFromRepo == null)
            {
                return(Unauthorized());
            }

            var claims = new[]
            {
                // my token gonna take two claims -> user's ID and user's username
                new Claim(ClaimTypes.NameIdentifier, userFromRepo.Id.ToString()),
                new Claim(ClaimTypes.Name, userFromRepo.Username)
            };

            // use the token from appsettings in bytes
            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.GetSection("AppSettings:Token").Value));

            // hash the token
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(1),
                SigningCredentials = creds
            };
            var tokenHandler = new JwtSecurityTokenHandler();

            // create a jwt
            var token = tokenHandler.CreateToken(tokenDescriptor);

            // write the token into the response of login
            return(Ok(new
            {
                token = tokenHandler.WriteToken(token)
            }));
        }
Example #28
0
        public async Task <IActionResult> Login(UserToLoginDto userToLoginDto)
        {
            var user = await _auth.Login(userToLoginDto.UserName.ToLower(), userToLoginDto.Password);

            if (user == null)
            {
                return(Unauthorized());
            }

            // Defining the payload of token(can be seen by anyone so don't put sensitive content)
            var claims = new[]
            {
                new Claim(System.Security.Claims.ClaimTypes.NameIdentifier, user.Id.ToString()),
                new Claim(System.Security.Claims.ClaimTypes.Name, user.Name)
            };

            // using the secret key
            var key = new SymmetricSecurityKey(Encoding.ASCII
                                               .GetBytes(_config.GetSection("AppSettings:Token").Value));

            // encrypting the key using HMACSHA512Signature ALgorithm
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);

            // Creating token descriptor containing the claims, creds and expiry date
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(1),
                SigningCredentials = creds
            };

            // Creating token handler to create token
            var tokenHandler = new JwtSecurityTokenHandler();

            var token = tokenHandler.CreateToken(tokenDescriptor);

            return(Ok(new{
                token = tokenHandler.WriteToken(token)
            }));
        }
Example #29
0
        public async Task <IActionResult> GetActionResultAsync(UserToLoginDto model)
        {
            if (ModelState.IsValid)
            {
                var result = await _userManager.FindByEmailAsync(model.Email);

                if (result != null)
                {
                    var dto = new UserToReturnDto
                    {
                        FirstName   = result.FirstName,
                        LastName    = result.LastName,
                        Gender      = result.Gender,
                        Email       = result.Email,
                        DateCreated = result.DateCreated
                    };
                    return(Ok(dto));
                }
            }

            return(BadRequest("Incorrect User Input"));
        }
        public async Task <IActionResult> SignIn([FromBody] UserToLoginDto userLoginResource)
        {
            var user = _userManager.Users.SingleOrDefault(u => u.UserName == userLoginResource.Email);

            if (user is null)
            {
                return(NotFound("User not found"));
            }

            var userSigninResult = await _userManager.CheckPasswordAsync(user, userLoginResource.Password);

            if (userSigninResult)
            {
                return(Ok(new
                {
                    token = GenerateJwt(user),
                    user = _mapper.Map <UserAuthDto>(user)
                }));
            }

            return(BadRequest("Email or password incorrect."));
        }