Пример #1
0
        /// <summary>
        /// Возвращает расшифрованный пароль пользователя
        /// </summary>
        /// <param name="user">Пользователь</param>
        /// <returns></returns>
        /// <exception cref="CryptographicException"></exception>
        public static string GetDecryptedPassword(this DUP_USER user)
        {
            string result;

            if ((user.US_Attribute & (int)DupUserAttributes.Converted) == (int)DupUserAttributes.Converted)
            {
                result = String.IsNullOrEmpty(user.US_PASSWORD) ? String.Empty : CryptoManager.DecodeTripleDesString(user.US_PASSWORD);
            }
            else
            {
                throw new CryptographicException("Невозможно расшифровать пароль пользователя, так как он не зашифрован");
            }

            return(result);
        }
Пример #2
0
        /// <summary>
        /// Возвращает онлайн-пользователя по логину / паролю
        /// </summary>
        /// <param name="dc">Контекст базы данных</param>
        /// <param name="name">Логин пользователя</param>
        /// <param name="decryptedPassword">Расшифрованный пароль (его обычно вводит пользователь)</param>
        /// <returns>Возвращает пользователя или null, если не нашли комбинации логин / пароль</returns>
        public static DUP_USER GetDupUser(this MtMainDbDataContext dc, string name, string decryptedPassword)
        {
            // для пользователей с зашифрованным паролем
            var user = dc.GetAllDupUsers().SingleOrDefault(u => u.US_ID == name &&
                                                           (u.US_Attribute & (int)DupUserAttributes.Converted) == (int)DupUserAttributes.Converted &&
                                                           CryptoManager.DecodeTripleDesString(u.US_PASSWORD) == decryptedPassword);

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

            // для пользователей с закодированным паролем
            user = dc.GetAllDupUsers().SingleOrDefault(u => u.US_ID == name &&
                                                       (u.US_Attribute & (int)DupUserAttributes.Converted) != (int)DupUserAttributes.Converted &&
                                                       u.US_PASSWORD == GetPasswordHash(decryptedPassword));
            return(user);
        }