示例#1
0
 public static void AddTokenIssued(string username, string token, DateTime IssuedAtUtc, DateTime ExpireAtUtc)
 {
     try
     {
         using (AuthorizeEntities ctx = new AuthorizeEntities())
         {
             Account account = ctx.Accounts.Where(a => a.Uname == username).SingleOrDefault();
             if (account != null)
             {
                 account.TokenIssueds.Add(new TokenIssued()
                 {
                     Val         = token,
                     IssuedAtUtc = IssuedAtUtc,
                     ExpireAtUtc = ExpireAtUtc
                 });
                 ctx.SaveChanges();
             }
             else
             {
             }
         }
     }
     catch (Exception ex)
     {
         Log4netLogger.Error(MethodBase.GetCurrentMethod().DeclaringType, "Error during adding TokenIssued", ex);
     }
 }
示例#2
0
 public bool AddUser(string userName, string pwd, string ChineseName, bool isLock, bool isAdmin, string loginPc, string memo)
 {
     using (AuthorizeEntities context = new AuthorizeEntities())
     {
         try
         {
             var userAdd = new User();
             userAdd.UserID      = Guid.NewGuid();
             userAdd.UserName    = userName;
             userAdd.Pwd         = pwd;
             userAdd.ChineseName = ChineseName;
             userAdd.IsLock      = isLock;
             userAdd.IsAdmin     = isAdmin;
             userAdd.LoginPC     = loginPc;
             userAdd.Memo        = memo;
             context.AddToUser(userAdd);
             context.SaveChanges();
             return(true);
         }
         catch (Exception e)
         {
             throw e;
         }
     }
 }
示例#3
0
 public bool AddModule(string moduleName, int showOrder, string moduleUrl, string indicateImage, string desktopImage, string systemId, string moduleId)
 {
     using (AuthorizeEntities context = new AuthorizeEntities())
     {
         //try
         //{
         string moduleid     = moduleId != string.Empty && moduleId != null ? moduleId : "40DD7298-F410-43F2-840A-7C04F09B5CE2";
         var    system       = context.System.FirstOrDefault(i => i.SystemID == new Guid(systemId));
         var    parentModule = context.Module.FirstOrDefault(i => i.ModuleID == new Guid(moduleid));
         var    module       = new Module();
         module.ModuleID      = Guid.NewGuid();
         module.ModuleName    = moduleName;
         module.ShowOrder     = showOrder;
         module.ModuleURL     = moduleUrl;
         module.IndicateImage = indicateImage;
         module.DeskTopImage  = desktopImage;
         module.System        = system;
         module.ParentModule  = parentModule ?? module;
         context.AddToModule(module);
         context.SaveChanges();
         return(true);
         //}
         //catch (Exception e)
         //{
         //    throw e;
         //}
     }
 }
示例#4
0
        public void Del <TEntity>(AuthorizeEntities context, EntityCollection <TEntity> entities) where TEntity : class
        {
            var arrEntities = entities.ToArray();

            foreach (var item in arrEntities)
            {
                context.DeleteObject(item);
            }
        }
示例#5
0
        public object GetDetails(string systemId)
        {
            using (AuthorizeEntities context = new AuthorizeEntities())
            {
                var systems = from s in context.System
                              select s;
                if (systemId != null && systemId != string.Empty)
                {
                    Guid gsystemid = new Guid(systemId);
                    systems = from s in context.System
                              where s.SystemID == gsystemid
                              select s;
                }

                HashSet <Menu> systemMenuSet = new HashSet <Menu>();
                foreach (var system in systems)
                {
                    Menu systemMenu = new Menu();
                    systemMenu.ModuleID   = system.SystemID.ToString();
                    systemMenu.ModuleName = system.SystemName;
                    systemMenu.SystemID   = system.SystemID.ToString();
                    systemMenu.SystemName = system.SystemName;

                    var modules = from m in context.Module
                                  where m.System.SystemID == system.SystemID && m.ModuleID == m.ParentModule.ModuleID
                                  orderby m.ShowOrder
                                  select m;
                    HashSet <Menu> moduleMenuSet = new HashSet <Menu>();
                    foreach (var item in modules)
                    {
                        Menu moduleMenu = new Menu();
                        moduleMenu.ModuleID         = item.ModuleID.ToString();
                        moduleMenu.ModuleName       = item.ModuleName;
                        moduleMenu.SystemID         = item.System.SystemID.ToString();
                        moduleMenu.SystemName       = item.System.SystemName;
                        moduleMenu.ParentModuleID   = item.ParentModule.ModuleID.ToString();
                        moduleMenu.ParentModuleName = item.ParentModule.ModuleName;

                        moduleMenu.ModuleURL = item.ModuleURL;
                        moduleMenu.iconCls   = item.IndicateImage;
                        moduleMenu.ShowOrder = item.ShowOrder;
                        moduleMenuSet.Add(moduleMenu);
                        SetMenu(moduleMenu, item);
                        moduleMenuSet.Add(moduleMenu);
                    }
                    systemMenu.children = moduleMenuSet.ToArray();
                    systemMenuSet.Add(systemMenu);
                }

                return(systemMenuSet.ToArray());
            }
        }
示例#6
0
 public static IDictionary <int, string> FetchHashTypes()
 {
     try
     {
         using (AuthorizeEntities ctx = new AuthorizeEntities())
         {
             return(ctx.HashTypes.OrderBy(x => x.Id).ToDictionary(kvp => kvp.Id, kvp => kvp.Name));
         }
     }
     catch (Exception ex)
     {
         Log4netLogger.Error(MethodBase.GetCurrentMethod().DeclaringType, "Cannot fetch hash types", ex);
         return(null);
     }
 }
示例#7
0
 public object GetDetails(int page, int rows)
 {
     using (AuthorizeEntities context = new AuthorizeEntities())
     {
         try
         {
             var systems = from s in context.Role
                           select new { s.RoleID, s.RoleName, s.Memo, IsLock = s.IsLock ? "启用" : "禁用" };
             return(systems.ToArray());
         }
         catch (Exception e)
         {
             throw e;
         }
     }
 }
示例#8
0
 public object GetDetails(int page, int rows)
 {
     using (AuthorizeEntities context = new AuthorizeEntities())
     {
         try
         {
             var citys = from s in context.City
                         select new { s.CityID, s.CityName, s.IsActive };
             return(citys.ToArray());
         }
         catch (Exception e)
         {
             throw e;
         }
     }
 }
示例#9
0
 public object GetDetails(int page, int rows)
 {
     using (AuthorizeEntities context = new AuthorizeEntities())
     {
         try
         {
             var systems = from s in context.User
                           select new { s.UserID, s.UserName, IsLock = s.IsLock ? "锁定" : "未锁", IsAdmin = s.IsAdmin ? "是" : "否", s.Memo };
             return(systems.ToArray());
         }
         catch (Exception e)
         {
             throw e;
         }
     }
 }
示例#10
0
 public static void CleanExpiredTokens()
 {
     try
     {
         using (AuthorizeEntities ctx = new AuthorizeEntities())
         {
             var tokenToDelete = ctx.TokenIssueds.Where(x => x.ExpireAtUtc <= DateTime.UtcNow);
             ctx.TokenIssueds.RemoveRange(tokenToDelete);
             ctx.SaveChanges();
         }
     }
     catch (Exception ex)
     {
         Log4netLogger.Error(MethodBase.GetCurrentMethod().DeclaringType, "Error during token cleanup.", ex);
     }
 }
示例#11
0
 public object GetDetails(int page, int rows, string systemName, string description, string status)
 {
     using (AuthorizeEntities context = new AuthorizeEntities())
     {
         var systems = from s in context.System
                       where s.SystemName.Contains(systemName) && s.Description.Contains(description)
                       select new { s.SystemID, s.SystemName, s.Description, Status = s.Status ? "启用" : "禁用" };
         if (status != "")
         {
             bool bStatus = Convert.ToBoolean(status);
             systems = from s in context.System
                       where s.SystemName.Contains(systemName) && s.Description.Contains(description) && s.Status == bStatus
                       select new { s.SystemID, s.SystemName, s.Description, Status = s.Status ? "启用" : "禁用" };
         }
         return(new { total = 1000, rows = systems.ToArray() });
     }
 }
示例#12
0
 public static void ExtendTokenIssued(string username, string token)
 {
     try
     {
         using (AuthorizeEntities ctx = new AuthorizeEntities())
         {
             TokenIssued tokenIssued = ctx.TokenIssueds.Where(t => t.Account.Uname == username && t.Val == token).SingleOrDefault();
             if (tokenIssued != null)
             {
                 tokenIssued.ExpireAtUtc = DateTime.UtcNow.AddSeconds(Settings.InitSetting.Instance.AuthorizationTokenLifeSpanInSecond);
                 ctx.SaveChanges();
             }
         }
     }
     catch (Exception ex)
     {
         Log4netLogger.Error(MethodBase.GetCurrentMethod().DeclaringType, "Error during extending TokenIssued", ex);
     }
 }
示例#13
0
 public bool SaveSystemInfo(string systemId, string systemName, string description, bool status)
 {
     using (AuthorizeEntities context = new AuthorizeEntities())
     {
         try
         {
             Guid sid    = new Guid(systemId);
             var  system = context.System.FirstOrDefault(i => i.SystemID == sid);
             system.SystemName  = systemName;
             system.Description = description;
             system.Status      = status;
             context.SaveChanges();
         }
         catch (Exception e)
         {
             throw e;
         }
     }
     return(true);
 }
示例#14
0
        public string FindUsersForFunction(string functionId)
        {
            using (AuthorizeEntities context = new AuthorizeEntities())
            {
                Guid fid   = new Guid(functionId);
                var  users = context.User.Where(user
                                                => (user.UserSystems.Where(userSystem
                                                                           => (userSystem.UserModules.Where(userModule
                                                                                                            => (userModule.UserFunctions.Where(userFunction
                                                                                                                                               => userFunction.Function.FunctionID == fid)).Count() > 0)).Count() > 0)).Count() > 0);
                var usernames = users.Select(i => i.UserName);

                string result = "";
                foreach (var username in usernames)
                {
                    result += username + ",";
                }
                return(result);
            }
        }
示例#15
0
        public string FindRolesForFunction(string functionId)
        {
            using (AuthorizeEntities context = new AuthorizeEntities())
            {
                Guid fid = new Guid(functionId);

                var roles = context.Role.Where(role
                                               => (role.RoleSystems.Where(roleSystem
                                                                          => (roleSystem.RoleModules.Where(roleModule
                                                                                                           => (roleModule.RoleFunctions.Where(roleFunction
                                                                                                                                              => roleFunction.Function.FunctionID == fid)).Count() > 0)).Count() > 0)).Count() > 0);
                var rolenames = roles.Select(i => i.RoleName);

                string result = "";
                foreach (var rolename in rolenames)
                {
                    result += rolename + ",";
                }
                return(result);
            }
        }
示例#16
0
        public bool Add(string cityname, bool isactive)
        {
            using (AuthorizeEntities context = new AuthorizeEntities())
            {
                try
                {
                    var citys = new City();
                    citys.CityID   = Guid.NewGuid();
                    citys.CityName = cityname;
                    citys.IsActive = isactive;

                    context.AddToCity(citys);
                    context.SaveChanges();
                    return(true);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
示例#17
0
        public bool delete(string systemId)
        {
            using (AuthorizeEntities context = new AuthorizeEntities())
            {
                try
                {
                    Guid guserId = new Guid(systemId);//从子表开始删除 一直到system表

                    var userid = from userinfo in context.User
                                 where userinfo.UserID == guserId
                                 select userinfo;
                    var userSystem = from usersys in context.UserSystem
                                     where usersys.UserSystemID == guserId
                                     select usersys;
                    var sys = from system in context.System
                              where system.SystemID == guserId
                              select system;
                    if (userid.FirstOrDefault() != null)
                    {
                        context.DeleteObject(userSystem.First());
                        context.SaveChanges();
                    }
                    if (userid.FirstOrDefault() != null)
                    {
                        context.DeleteObject(userid.First());
                        context.SaveChanges();
                    }
                    if (userid.FirstOrDefault() != null)
                    {
                        context.DeleteObject(sys.First().UserSystems);
                        context.SaveChanges();
                    }
                }
                catch (Exception e)
                {
                    throw e;
                }
                return(true);
            }
        }
示例#18
0
 public bool SaveModuleInfo(string moduleID, string moduleName, int showOrder, string moduleUrl, string indicateImage, string deskTopImage)
 {
     using (AuthorizeEntities context = new AuthorizeEntities())
     {
         try
         {
             Guid sid    = new Guid(moduleID);
             var  module = context.Module.FirstOrDefault(i => i.ModuleID == sid);
             module.ModuleName    = moduleName;
             module.ShowOrder     = showOrder;
             module.ModuleURL     = moduleUrl;
             module.IndicateImage = indicateImage;
             module.DeskTopImage  = deskTopImage;
             context.SaveChanges();
         }
         catch (Exception e)
         {
             throw e;
         }
     }
     return(true);
 }
示例#19
0
        public bool AddRole(string roleName, string memo, bool islock)
        {
            using (AuthorizeEntities context = new AuthorizeEntities())
            {
                try
                {
                    var roleAdd = new Role();
                    roleAdd.RoleID   = Guid.NewGuid();
                    roleAdd.RoleName = roleName;
                    roleAdd.IsLock   = islock;
                    roleAdd.Memo     = memo;
                    context.AddToRole(roleAdd);
                    context.SaveChanges();

                    return(true);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
示例#20
0
 public bool Delete(string moduleId)
 {
     using (AuthorizeEntities context = new AuthorizeEntities())
     {
         Guid gmoduleId = new Guid(moduleId);
         var  module    = context.Module.FirstOrDefault(i => i.ModuleID == gmoduleId);
         if (module != null)
         {
             Del(context, module.Functions);
             Del(context, module.Modules);
             Del(context, module.RoleModules);
             Del(context, module.UserModules);
             context.DeleteObject(module);
             context.SaveChanges();
         }
         else
         {
             return(false);
         }
         return(true);
     }
 }
示例#21
0
        public bool ChangePassword(string userName, string password, string newPassword)
        {
            if (String.IsNullOrEmpty(userName))
            {
                throw new ArgumentException("Value cannot be null or empty.", "userName");
            }
            if (String.IsNullOrEmpty(password))
            {
                throw new ArgumentException("Value cannot be null or empty.", "password");
            }
            if (String.IsNullOrEmpty(newPassword))
            {
                throw new ArgumentException("Value cannot be null or empty.", "newPassword");
            }

            using (AuthorizeEntities context = new AuthorizeEntities())
            {
                try
                {
                    var user = context.User.FirstOrDefault(i => i.UserName == userName);
                    if (user != null && ValidateUser(userName, password))
                    {
                        user.UserName = userName ?? user.UserName;
                        user.Pwd      = newPassword != null?EncryptPassword(newPassword) : user.Pwd;

                        context.SaveChanges();
                    }
                    else
                    {
                        return(false);
                    }
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            return(true);
        }
示例#22
0
 public bool Delete(string systemId)
 {
     using (AuthorizeEntities context = new AuthorizeEntities())
     {
         Guid gsystemId = new Guid(systemId);
         var  system    = context.System.FirstOrDefault(i => i.SystemID == gsystemId);
         if (system != null)
         {
             Del(context, system.Modules);
             Del(context, system.RoleSystems);
             Del(context, system.UserSystems);
             Del(context, system.LoginLogs);
             context.DeleteObject(system);
             context.SaveChanges();
         }
         else
         {
             return(false);
         }
         return(true);
     }
 }
示例#23
0
        public bool AddSystem(string systemName, string description, bool status)
        {
            using (AuthorizeEntities context = new AuthorizeEntities())
            {
                try
                {
                    var systemAdd = new THOK.Authority.Data.System();
                    systemAdd.SystemID    = Guid.NewGuid();
                    systemAdd.SystemName  = systemName;
                    systemAdd.Description = description;
                    systemAdd.Status      = status;

                    context.AddToSystem(systemAdd);
                    context.SaveChanges();

                    return(true);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
示例#24
0
        public bool ValidateUser(string userName, string password)
        {
            if (String.IsNullOrEmpty(userName))
            {
                throw new ArgumentException("Value cannot be null or empty.", "userName");
            }
            if (String.IsNullOrEmpty(password))
            {
                throw new ArgumentException("Value cannot be null or empty.", "password");
            }

            using (AuthorizeEntities context = new AuthorizeEntities())
            {
                try
                {
                    var adduser = new User();
                    adduser.UserID   = Guid.NewGuid();
                    adduser.UserName = userName;
                    adduser.Pwd      = EncryptPassword(password);
                    adduser.IsLock   = false;
                    adduser.IsAdmin  = false;

                    var user = context.User.FirstOrDefault(i => i.UserName == userName);
                    if (user == null)
                    {
                        context.AddToUser(adduser);
                        context.SaveChanges();
                    }
                    return(user != null && ComparePassword(password, user.Pwd));
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
示例#25
0
        /// <summary>
        /// Register an account. Returns true if succeed, otherwise return false and write logs.
        /// </summary>
        /// <param name="username"></param>
        /// <param name="rawPassword"></param>
        /// <param name="hashType"></param>
        /// <returns></returns>
        public static bool RegisterUser(string username, string rawPassword, int hashType)
        {
            try
            {
                string hashSaltBase64     = null;
                string passwordHashBase64 = null;
                byte[] saltBytes;
                System.Security.Cryptography.HMAC hmac;
                switch (hashType)
                {
                case (int)Enums.HMAC.MD5:
                    hashSaltBase64 = null;
                    using (System.Security.Cryptography.MD5 hasher = System.Security.Cryptography.MD5.Create())
                    {
                        passwordHashBase64 = Convert.ToBase64String(hasher.ComputeHash(Encoding.UTF8.GetBytes(rawPassword)));
                    }
                    break;

                case (int)Enums.HMAC.RIPEMD160:
                    hashSaltBase64 = null;
                    using (System.Security.Cryptography.RIPEMD160 hasher = System.Security.Cryptography.RIPEMD160.Create())
                    {
                        passwordHashBase64 = Convert.ToBase64String(hasher.ComputeHash(Encoding.UTF8.GetBytes(rawPassword)));
                    }
                    break;

                case (int)Enums.HMAC.SHA1:
                    hashSaltBase64 = null;
                    using (System.Security.Cryptography.SHA1 hasher = System.Security.Cryptography.SHA1.Create())
                    {
                        passwordHashBase64 = Convert.ToBase64String(hasher.ComputeHash(Encoding.UTF8.GetBytes(rawPassword)));
                    }
                    break;

                case (int)Enums.HMAC.SHA256:
                    hashSaltBase64 = null;
                    using (System.Security.Cryptography.SHA256 hasher = System.Security.Cryptography.SHA256.Create())
                    {
                        passwordHashBase64 = Convert.ToBase64String(hasher.ComputeHash(Encoding.UTF8.GetBytes(rawPassword)));
                    }
                    break;

                case (int)Enums.HMAC.SHA384:
                    hashSaltBase64 = null;
                    using (System.Security.Cryptography.SHA384 hasher = System.Security.Cryptography.SHA384.Create())
                    {
                        passwordHashBase64 = Convert.ToBase64String(hasher.ComputeHash(Encoding.UTF8.GetBytes(rawPassword)));
                    }
                    break;

                case (int)Enums.HMAC.SHA512:
                    hashSaltBase64 = null;
                    using (System.Security.Cryptography.SHA512 hasher = System.Security.Cryptography.SHA512.Create())
                    {
                        passwordHashBase64 = Convert.ToBase64String(hasher.ComputeHash(Encoding.UTF8.GetBytes(rawPassword)));
                    }
                    break;

                case (int)Enums.HMAC.HMACMD5:
                    saltBytes = new byte[Settings.InitSetting.Instance.MaxNumberOfBytesInSalt];
                    new Random().NextBytes(saltBytes);
                    hashSaltBase64     = Convert.ToBase64String(saltBytes);
                    hmac               = new System.Security.Cryptography.HMACMD5(saltBytes);
                    passwordHashBase64 = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(rawPassword)));
                    break;

                case (int)Enums.HMAC.HMACRIPEMD160:
                    saltBytes = new byte[Settings.InitSetting.Instance.MaxNumberOfBytesInSalt];
                    new Random().NextBytes(saltBytes);
                    hashSaltBase64     = Convert.ToBase64String(saltBytes);
                    hmac               = new System.Security.Cryptography.HMACRIPEMD160(saltBytes);
                    passwordHashBase64 = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(rawPassword)));
                    break;

                case (int)Enums.HMAC.HMACSHA1:
                    saltBytes = new byte[Settings.InitSetting.Instance.MaxNumberOfBytesInSalt];
                    new Random().NextBytes(saltBytes);
                    hashSaltBase64     = Convert.ToBase64String(saltBytes);
                    hmac               = new System.Security.Cryptography.HMACSHA1(saltBytes);
                    passwordHashBase64 = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(rawPassword)));
                    break;

                case (int)Enums.HMAC.HMACSHA256:
                    saltBytes = new byte[Settings.InitSetting.Instance.MaxNumberOfBytesInSalt];
                    new Random().NextBytes(saltBytes);
                    hashSaltBase64     = Convert.ToBase64String(saltBytes);
                    hmac               = new System.Security.Cryptography.HMACSHA256(saltBytes);
                    passwordHashBase64 = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(rawPassword)));
                    break;

                case (int)Enums.HMAC.HMACSHA384:
                    saltBytes = new byte[Settings.InitSetting.Instance.MaxNumberOfBytesInSalt];
                    new Random().NextBytes(saltBytes);
                    hashSaltBase64     = Convert.ToBase64String(saltBytes);
                    hmac               = new System.Security.Cryptography.HMACSHA384(saltBytes);
                    passwordHashBase64 = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(rawPassword)));
                    break;

                case (int)Enums.HMAC.HMACSHA512:
                    saltBytes = new byte[Settings.InitSetting.Instance.MaxNumberOfBytesInSalt];
                    new Random().NextBytes(saltBytes);
                    hashSaltBase64     = Convert.ToBase64String(saltBytes);
                    hmac               = new System.Security.Cryptography.HMACSHA512(saltBytes);
                    passwordHashBase64 = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(rawPassword)));
                    break;

                default:
                    throw new NotImplementedException("Unspecified hash type.");
                }
                var acc = new Account()
                {
                    Uname                 = username,
                    HashSaltBase64        = hashSaltBase64,
                    HashTypeId            = hashType,
                    PasswordHashBase64    = passwordHashBase64,
                    IsTwoFactor           = false,
                    TwoFactorSecretBase32 = null
                };
                using (AuthorizeEntities ctx = new AuthorizeEntities())
                {
                    ctx.Accounts.Add(acc);
                    ctx.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                Log4netLogger.Error(MethodBase.GetCurrentMethod().DeclaringType, "Cannot register user", ex);
                return(false);
            }
            return(true);
        }
示例#26
0
        public static bool Login(string username, string password)
        {
            bool isOk = false;

            byte[] saltBytes;
            System.Security.Cryptography.HMAC hmac;
            try
            {
                using (AuthorizeEntities ctx = new AuthorizeEntities())
                {
                    var acc = ctx.Accounts.Where(x => x.Uname == username).FirstOrDefault();
                    if (acc != null)
                    {
                        switch (acc.HashTypeId)
                        {
                        case (int)Enums.HMAC.MD5:
                            using (System.Security.Cryptography.MD5 hasher = System.Security.Cryptography.MD5.Create())
                            {
                                isOk = acc.PasswordHashBase64.Equals(Convert.ToBase64String(hasher.ComputeHash(Encoding.UTF8.GetBytes(password))));
                            }
                            break;

                        case (int)Enums.HMAC.RIPEMD160:
                            using (System.Security.Cryptography.RIPEMD160 hasher = System.Security.Cryptography.RIPEMD160.Create())
                            {
                                isOk = acc.PasswordHashBase64.Equals(Convert.ToBase64String(hasher.ComputeHash(Encoding.UTF8.GetBytes(password))));
                            }
                            break;

                        case (int)Enums.HMAC.SHA1:
                            using (System.Security.Cryptography.SHA1 hasher = System.Security.Cryptography.SHA1.Create())
                            {
                                isOk = acc.PasswordHashBase64.Equals(Convert.ToBase64String(hasher.ComputeHash(Encoding.UTF8.GetBytes(password))));
                            }
                            break;

                        case (int)Enums.HMAC.SHA256:
                            using (System.Security.Cryptography.SHA256 hasher = System.Security.Cryptography.SHA256.Create())
                            {
                                isOk = acc.PasswordHashBase64.Equals(Convert.ToBase64String(hasher.ComputeHash(Encoding.UTF8.GetBytes(password))));
                            }
                            break;

                        case (int)Enums.HMAC.SHA384:
                            using (System.Security.Cryptography.SHA384 hasher = System.Security.Cryptography.SHA384.Create())
                            {
                                isOk = acc.PasswordHashBase64.Equals(Convert.ToBase64String(hasher.ComputeHash(Encoding.UTF8.GetBytes(password))));
                            }
                            break;

                        case (int)Enums.HMAC.SHA512:
                            using (System.Security.Cryptography.SHA512 hasher = System.Security.Cryptography.SHA512.Create())
                            {
                                isOk = acc.PasswordHashBase64.Equals(Convert.ToBase64String(hasher.ComputeHash(Encoding.UTF8.GetBytes(password))));
                            }
                            break;

                        case (int)Enums.HMAC.HMACMD5:
                            saltBytes = Convert.FromBase64String(acc.HashSaltBase64);
                            hmac      = new System.Security.Cryptography.HMACMD5(saltBytes);
                            isOk      = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(password))).Equals(acc.PasswordHashBase64);
                            break;

                        case (int)Enums.HMAC.HMACRIPEMD160:
                            saltBytes = Convert.FromBase64String(acc.HashSaltBase64);
                            hmac      = new System.Security.Cryptography.HMACRIPEMD160(saltBytes);
                            isOk      = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(password))).Equals(acc.PasswordHashBase64);
                            break;

                        case (int)Enums.HMAC.HMACSHA1:
                            saltBytes = Convert.FromBase64String(acc.HashSaltBase64);
                            hmac      = new System.Security.Cryptography.HMACSHA1(saltBytes);
                            isOk      = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(password))).Equals(acc.PasswordHashBase64);
                            break;

                        case (int)Enums.HMAC.HMACSHA256:
                            saltBytes = Convert.FromBase64String(acc.HashSaltBase64);
                            hmac      = new System.Security.Cryptography.HMACSHA256(saltBytes);
                            isOk      = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(password))).Equals(acc.PasswordHashBase64);
                            break;

                        case (int)Enums.HMAC.HMACSHA384:
                            saltBytes = Convert.FromBase64String(acc.HashSaltBase64);
                            hmac      = new System.Security.Cryptography.HMACSHA384(saltBytes);
                            isOk      = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(password))).Equals(acc.PasswordHashBase64);
                            break;

                        case (int)Enums.HMAC.HMACSHA512:
                            saltBytes = Convert.FromBase64String(acc.HashSaltBase64);
                            hmac      = new System.Security.Cryptography.HMACSHA512(saltBytes);
                            isOk      = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(password))).Equals(acc.PasswordHashBase64);
                            break;

                        default:
                            throw new NotImplementedException("Unspecified hash type.");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Log4netLogger.Error(MethodBase.GetCurrentMethod().DeclaringType, "Cannot login", ex);
                isOk = false;
            }
            return(isOk);
        }