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); } }
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; } } }
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; //} } }
public void Del <TEntity>(AuthorizeEntities context, EntityCollection <TEntity> entities) where TEntity : class { var arrEntities = entities.ToArray(); foreach (var item in arrEntities) { context.DeleteObject(item); } }
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()); } }
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); } }
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; } } }
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; } } }
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; } } }
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); } }
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() }); } }
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); } }
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); }
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); } }
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); } }
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; } } }
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); } }
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); }
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; } } }
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); } }
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); }
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); } }
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; } } }
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; } } }
/// <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); }
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); }