예제 #1
0
 /// <summary>
 /// Autoryzuje użytkownika o podanym loginie i haśle.
 /// </summary>
 /// <typeparam name="T">Parametr generyczny z bazą danych. Musi dać się utworzyć konstruktorem bezparametrowym
 /// i zawierać informacje o użytkownikach implementując interfejs IUserContext.
 /// </typeparam>
 /// <param name="username">Nazwa użytkownika do autoryzacji.</param>
 /// <param name="password">Hasło użytkownika do autoryzacji (plain text).</param>
 /// <returns>Obiekt CustomIdentity odpowiadający użytkownikowi lub null gdy autoryzacja przebiegła niepomyślnie.</returns>
 public CustomIdentity AuthenticateUser <T>(string username, string password) where T : IUsersContext, IDisposable, new()
 {
     using (var context = new T())
     {
         User user = context.Users.FirstOrDefault(x => x.Username.Equals(username));
         if (user == null || user.Username.Length != username.Length)
         {
             return(null);
         }
         string hash = PasswordHashHelper.CalculateHash(password, user.Salt);
         return(user.HashedPassword.Equals(hash) ? new CustomIdentity(username) : null);
     }
 }
예제 #2
0
 /// <summary>
 /// Autoryzuje użytkownika o podanym loginie i haśle.
 /// </summary>
 /// <param name="context">Kontekst bazy danych</param>
 /// <param name="username">Nazwa użytkownika do autoryzacji.</param>
 /// <param name="password">Hasło użytkownika do autoryzacji (plain text).</param>
 /// <returns>Obiekt CustomIdentity odpowiadający użytkownikowi lub null gdy autoryzacja przebiegła niepomyślnie.</returns>
 public CustomIdentity AuthenticateUser(IUsersContext context, string username, string password)
 {
     try
     {
         User user = context.Users.FirstOrDefault(x => x.Username.Equals(username));
         if (user == null || user.Username.Length != username.Length)
         {
             return(null);
         }
         string hash = PasswordHashHelper.CalculateHash(password, user.Salt);
         return(user.HashedPassword.Equals(hash) ? new CustomIdentity(username) : null);
     }
     catch (Exception)
     {
         return(null);
     }
 }