Exemple #1
0
        public ActionResult CreateToken(User user)
        {
            System.Console.WriteLine(user.Username + " " + user._id + " " + user.Type);
            var token = _tokenBuilder.BuildToken(user._id, user.Username, user.Type);

            return(Ok(token));
        }
        public UserWithToken Authenticate(string username, string password)
        {
            var usr = _uow.Query <User>()
                      .Where(x => x.Username == username && !x.IsDeleted)
                      .Include(x => x.Roles)
                      .ThenInclude(x => x.Role)
                      .FirstOrDefault();


            if (usr == null)
            {
                throw new BadRequestException("incorrect username or password");
            }

            if (string.IsNullOrWhiteSpace(password) || !usr.Password.VerifyWithBCrypt(password))
            {
                throw new BadRequestException("incorrect username or password");
            }

            var expiresIn = DateTime.Now + TokenAuthOption.ExpiresSpan;

            var token = _tokenBuilder.BuildToken(usr.Username, usr.Roles.Select(x => x.Role.Name).ToArray(), expiresIn);

            return(new UserWithToken
            {
                ExpiresAt = expiresIn,
                Token = token,
                User = usr
            });
        }
Exemple #3
0
        public async Task <IActionResult> Login([FromBody] User user)
        {
            try
            {
                var dbUser = await _userBusinessLogic.GetUserAsync(user.Username);

                if (dbUser == null)
                {
                    return(NotFound("User not found."));
                }

                var isValid = BCrypt.Net.BCrypt.Verify(user.Password, dbUser.Password);

                if (!isValid)
                {
                    return(BadRequest("Could not authenticate user."));
                }

                var token = _tokenBuilder.BuildToken(user.Username);

                return(Ok(token));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex.Message + "  " + ex.StackTrace));
            }
        }
Exemple #4
0
        public async Task <IActionResult> Login(LoginViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    // Attempt to Login
                    var user = await userRepo.LoginUserAsync(viewModel.Email, viewModel.Password);

                    // Disallow logging in if the email has not been
                    // confirmed by the User yet
                    if (!user.EmailConfirmed)
                    {
                        return(Unauthorized("Email must be confirmed before proceeding."));
                    }

                    logger?.LogInformation($"User JWT accessed: {user.Email}");
                    return(Ok(tokenBuilder.BuildToken(user.Email)));
                }
                // BadRequest if User does not exist
                catch (UserDoesNotExistException)
                {
                    return(BadRequest($"The User with email {viewModel.Email} does not exist"));
                }
                // Bad request if password does not match hashed password
                catch (UserPasswordDoesNotMatchException)
                {
                    return(BadRequest($"The password did not match"));
                }
            }
            return(BadRequest(ModelState));
        }
Exemple #5
0
        public async Task <IActionResult> SignUp([FromBody] UserSignUpVM user)
        {
            ApplicationUser appUser = _mapper.Map <UserSignUpVM, ApplicationUser>(user);

            appUser.UserName = user.Email;
            IdentityResult result = await _userManager.CreateAsync(appUser, user.Password);

            if (result == IdentityResult.Success)
            {
                await _signInManager.SignInAsync(appUser, false);

                var token = _tokenBuilder.BuildToken(appUser);
                return(Ok(token));
            }
            else
            {
                return(BadRequest("User already exists"));
            }
        }
        public async Task <IActionResult> Login([FromBody] User user)
        {
            var dbUser = await _context.Users.FirstOrDefaultAsync(u => u.Username == user.Username);

            if (dbUser != null)
            {
                // Пароль для упрощения храниться в чистом виде!
                // В реальных проектах, необходимо хранить пароль в виде хэша с солью.

                if (dbUser.Password == user.Password)
                {
                    var token = _tokenBuilder.BuildToken(user.Username);
                    return(Ok(token));
                }

                return(BadRequest("Could not authenticate user."));
            }

            return(NotFound("User not found."));
        }
Exemple #7
0
        public async Task <IActionResult> Login(UserForLoginDto userForLoginDto)
        {
            var userFromRepo = await _repo.Login(userForLoginDto.Username.ToLower(), userForLoginDto.Password);

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

            var tokenObj = _tokenBuilder.BuildToken(userFromRepo);

            return(Ok(tokenObj));
        }
Exemple #8
0
        private TokenResponse GetTokenResponse(ApplicationCore.Entities.Admin user, bool isPersistent)
        {
            var expiresAtUtc = DateTime.UtcNow.AddDays(7);

            var token = _tokenBuilder.BuildToken(user, expiresAtUtc, isPersistent);

            _logger.Info($"{user.Username} requested new token.");

            return(new TokenResponse
            {
                AccessToken = token,
                ExpiresAtUtc = expiresAtUtc
            });
        }
        public async Task <ActionResult> SignUp([Bind("Email,Password")] UserSignUpVM userVM)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var user = new ApplicationUser
                    {
                        Id       = Guid.NewGuid().ToString(),
                        Email    = userVM.Email,
                        Password = _passwordService.HashPassword(userVM.Password)
                    };
                    await _cosmosDbService.AddUserAsync(user);

                    var token = _tokenBuilder.BuildToken(user);
                    return(Ok(token));
                }
                catch (Exception e)
                {
                    return(BadRequest(e.Message));
                }
            }
            return(BadRequest("Invalid user model"));
        }
Exemple #10
0
        public Task <string> Handle(GenerateUserTokenCommand request, CancellationToken cancellationToken)
        {
            return(Task.Run(() =>
            {
                if (string.IsNullOrEmpty(request.UserName) || string.IsNullOrEmpty(request.Password))
                {
                    return null;
                }

                var user = _repository.GetUser(request.UserName);

                return user == null || _cryptPassword.GetCrypted(request.Password) != user.Password
                    ? null
                    : _tokenBuilder.BuildToken(user);
            }));
        }
Exemple #11
0
        public ActionResult <String> PostUser1(Users user)
        {
            var dateCurrent = DateTime.Now;
            // Console.WriteLine(user.username);
            // Console.WriteLine(user.password);
            var result = (from u in _context.Users
                          // join s in _context.Shops on u.id equals s.id
                          where u.isDeleted == false &&
                          u.username == user.username &&
                          u.password == user.password &&
                          u.ShopsId == user.ShopsId &&
                          u.Shops.time_open <= dateCurrent &&
                          dateCurrent <= u.Shops.time_close
                          select new
            {
                u.id,
                u.name,
                u.username,
                u.PositionsId,
                u.ShopsId
            }).FirstOrDefault();

            // Console.WriteLine(result);
            if (result == null)
            {
                return(NotFound());
            }
            else
            {
                var userData = _context.Users.Find(result.id);
                var token    = _tokenBuilder.BuildToken(userData);
                userData.remember_token = token;
                _context.Update(userData);
                _context.SaveChangesAsync();

                var us = new Users();
                us.username       = user.username;
                us.ShopsId        = user.ShopsId;
                us.PositionsId    = userData.PositionsId;
                us.remember_token = token;
                HttpContext.Session.SetObjectAsJson("user", us);

                return(token);
                //return CreatedAtAction("GetUser", "abc");
            }
        }
        public async Task <IActionResult> Login([FromBody] LoginBindingModel model)
        {
            var user = await _userRepository.FindAsync(x => x.Email == model.Email);

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

            var(Verified, NeedsUpgrade) = _passwordHasher.Check(user.Password, model.Password);

            if (!Verified)
            {
                return(BadRequest("Could not authenticate user."));
            }

            var claims = new List <Claim>
            {
                new Claim(ClaimTypes.Name, user.Username),
                new Claim(ClaimTypes.Role, user.Role),
            };

            var authProperties = new AuthenticationProperties
            {
                IsPersistent = model.RememberMe,
                ExpiresUtc   = DateTimeOffset.UtcNow.AddHours(1)
            };

            var claimsIdentity = new ClaimsIdentity(
                claims,
                CookieAuthenticationDefaults.AuthenticationScheme);

            await HttpContext.SignInAsync(
                CookieAuthenticationDefaults.AuthenticationScheme,
                new ClaimsPrincipal(claimsIdentity),
                authProperties);

            var token = _tokenBuilder.BuildToken(user.Username);

            return(Ok(token));
        }
Exemple #13
0
        public async Task <IActionResult> Login([FromBody] User user)
        {
            var userResult = _userService.Authenticate(user.Username, user.Password);

            if (userResult == null)
            {
                return(BadRequest("Username or password is incorrect"));
            }

            var token = await _tokenBuilder.BuildToken(userResult);

            return(Ok(new
            {
                UserId = userResult.UserId,
                Username = userResult.Username,
                FirstName = userResult.FirstName,
                LastName = userResult.LastName,
                Role = userResult.Role,
                Token = token
            }));
        }
Exemple #14
0
        public async Task <string> Login(User user)
        {
            var dbUser = (await _userRepository.GetAllAsync())
                         .SingleOrDefault(u => u.Username == user.Username);

            if (dbUser == null)
            {
                return(string.Empty);
            }

            CryptoHelper cryptoHelper = new CryptoHelper();
            var          isValid      = cryptoHelper.Decrypt(dbUser.Password) == user.Password;

            if (!isValid)
            {
                return(string.Empty);
            }

            var token = _tokenBuilder.BuildToken(user.Username);

            return(token);
        }
Exemple #15
0
        public async Task <IActionResult> Login([FromBody] User user)
        {
            var dbUser = await _context
                         .Users
                         .SingleOrDefaultAsync(u => u.UserName == user.UserName);

            if (dbUser == null)
            {
                return(NotFound("User not found."));
            }

            var isValid = dbUser.Password == user.Password;

            if (!isValid)
            {
                return(BadRequest("Could not authenticate user."));
            }

            var token = _tokenBuilder.BuildToken(user.UserName);

            return(Ok(token));
        }
        public async Task <IActionResult> Login([FromBody] UserDto user)
        {
            var dbUser = await _context
                         .Users
                         .SingleOrDefaultAsync(u => u.Username == user.Username);

            if (dbUser == null)
            {
                return(NotFound("User not found."));
            }

            // This is just an example, made for simplicity; do not store plain passwords in the database
            // Always hash and salt your passwords
            var isValid = dbUser.Password == user.Password;

            if (!isValid)
            {
                return(BadRequest("Could not authenticate user."));
            }

            var token = _tokenBuilder.BuildToken(user.Username);

            return(Ok(token));
        }
Exemple #17
0
        public IActionResult LoginForm([FromBody] Users users)
        {
            if (ModelState.IsValid)
            {
                if (!_context.Users.Any(u => u.username == users.username && u.password == users.password && u.ShopsId == users.ShopsId))
                {
                    return(Content("Tài khoản hoặc mật khẩu không đúng !"));
                }
                else
                {
                    var result = _loginRepository.GetUser(users);
                    if (result != null)
                    {
                        var userData       = _context.Users.Find(result.id);
                        var remember_token = _tokenBuilder.BuildToken(userData);

                        userData.remember_token = remember_token;
                        _context.Update(userData);
                        _context.SaveChangesAsync();

                        var us = new Users();
                        us.id             = userData.id;
                        us.username       = userData.username;
                        us.ShopsId        = userData.ShopsId;
                        us.PositionsId    = userData.PositionsId;
                        us.remember_token = remember_token;
                        HttpContext.Session.SetObjectAsJson("user", us);
                        return(CreatedAtAction("GetUser", remember_token));
                    }
                    return(StatusCode(202, "Tài khoản hết hạn !"));


                    //var dateNow = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
                    //var result = from u in _context.Users
                    //             where u.username == users.username &&
                    //             u.password == users.password &&
                    //             u.ShopsId == users.ShopsId &&
                    //             u.Shops.time_open <= dateNow &&
                    //             u.Shops.time_close >= dateNow &&
                    //             u.isDeleted == false
                    //             select new
                    //             {
                    //                 u.id,
                    //                 u.name,
                    //                 u.username,
                    //                 u.PositionsId,
                    //                 u.ShopsId
                    //             };

                    //if (result.Count() > 0)
                    //{
                    //    var userData = _context.Users.Find(result.First().id);
                    //    var remember_token = _tokenBuilder.BuildToken(userData);

                    //    userData.remember_token = remember_token;
                    //    _context.Update(userData);
                    //    _context.SaveChangesAsync();

                    //    var us = new Users();
                    //    us.id = userData.id;
                    //    us.username = userData.username;
                    //    us.ShopsId = userData.ShopsId;
                    //    us.PositionsId = userData.PositionsId;
                    //    us.remember_token = remember_token;
                    //    HttpContext.Session.SetObjectAsJson("user", us);
                    //    return CreatedAtAction("GetUser", remember_token);
                    //}
                    //else
                    //    return StatusCode(202, "Tài khoản hết hạn !");
                }
            }
            else
            {
                return(Content("Vui lòng kiểm tra lại thông tin"));
            }
        }