示例#1
0
        private async Task <bool> IsUserInDatabase(string username)
        {
            using (DatabaseUserContext context = new DatabaseUserContext())
            {
                var user = await context.Users.FirstOrDefaultAsync(u => u.Username == username);

                return(user != null);
            }
        }
示例#2
0
 public async Task <IEnumerable <LoginAttemptDTO> > GetAllLoginAttempts(string username)
 {
     using (DatabaseUserContext context = new DatabaseUserContext())
     {
         var loginAttempts = context.LoginAttempts.Where(s => s.User.Username == username).Select(l => new LoginAttemptDTO
         {
             Username     = l.User.Username,
             IsSuccessful = l.IsSuccessful,
             LoginTime    = l.LoginTime
         });
         return(await loginAttempts.ToListAsync());
     }
 }
示例#3
0
 public async Task AddLoginAttempt(LoginAttemptDTO loginAttempt)
 {
     using (DatabaseUserContext context = new DatabaseUserContext())
     {
         context.LoginAttempts.Add(new LoginAttempt()
         {
             IsSuccessful = loginAttempt.IsSuccessful,
             UserId       = context.Users.First(u => u.Username == loginAttempt.Username).Id,
             LoginTime    = loginAttempt.LoginTime
         });
         await context.SaveChangesAsync();
     }
 }
示例#4
0
        public async Task <UserDTO> GetUser(int id)
        {
            using (DatabaseUserContext context = new DatabaseUserContext())
            {
                var user = await context.Users.FirstOrDefaultAsync(n => n.Id == id);

                return(user != null ? new UserDTO
                {
                    Id = user.Id,
                    LastName = user.LastName,
                    Name = user.Name,
                    Pesel = user.Pesel,
                    Role = user.Role,
                    Username = user.Username
                } : null);
            }
        }
示例#5
0
        private async Task <bool> HasUserValidRole(string username, string role)
        {
            using (DatabaseUserContext context = new DatabaseUserContext())
            {
                var user = await context.Users.FirstAsync(u => u.Username == username);

                if (user.Role == "Doctor")
                {
                    return(role == "Doctor" || role == "Patient");
                }
                if (user.Role == "Pharmacist")
                {
                    return(role == "Pharmacist" || role == "Patient");
                }
                return(role == "Patient");
            }
        }
示例#6
0
        public async Task <(string, int)> GetPasswordHash(string username, string role)
        {
            if (!await IsUserInDatabase(username))
            {
                throw new ArgumentException("User not exist in database");
            }
            if (!await HasUserValidRole(username, role))
            {
                throw new ArgumentException("User has invalid role");
            }
            using (DatabaseUserContext context = new DatabaseUserContext())
            {
                var user = await context.Users.FirstAsync(u => u.Username == username);

                return(user.PasswordHash, user.Id);
            }
        }
示例#7
0
 public async Task <IEnumerable <UserDTO> > GetUsers(string name, string lastName, string pesel, string role, string username)
 {
     using (DatabaseUserContext context = new DatabaseUserContext())
     {
         return(await context.Users
                .Where(u =>
                       (role == "" || u.Role == role) &&
                       (name == "" || u.Name == name) &&
                       (lastName == "" || u.LastName == lastName) &&
                       (pesel == "" || u.Pesel == pesel) &&
                       (username == "" || u.Username == username))
                .Select(n => new UserDTO
         {
             Id = n.Id,
             LastName = n.LastName,
             Name = n.Name,
             Pesel = n.Pesel,
             Role = n.Role,
             Username = n.Username
         }).ToListAsync());
     }
 }