private static IEnumerable<Term> GetTermFromPermissionGrant(PermissionGrant permissionGrant, IEnumerable<Term> allTerms) { IList<Term> result = new List<Term>(); if (permissionGrant.IsExactPattern) { var term = allTerms.FirstOrDefault(m => m.RoleKey == permissionGrant.TermExactPattern); if (term != null) { result.Add(term); } } else { IEnumerable<Term> terms; if (permissionGrant.TermPattern == "*" || permissionGrant.TermPattern == ".*") { result = allTerms.ToList(); } else { foreach (var term in allTerms) { try { if (Regex.IsMatch(term.RoleKeyLabel, permissionGrant.TermPattern)) { result.Add(term); } } catch { terms = new Term[] { }; } } } } return result; }
private IEnumerable<Term> GetTermFromPermissionGrant(PermissionGrant permissionGrant, IEnumerable<Term> allTerms) { IList<Term> list = new List<Term>(); if (permissionGrant.IsExactPattern) { Term term = allTerms.FirstOrDefault(m => m.RoleKey == permissionGrant.TermExactPattern); if (term != null) list.Add(term); } else if (permissionGrant.TermPattern == "*" || permissionGrant.TermPattern == ".*") { list = allTerms.ToList(); } else { foreach (var term in allTerms) { try { if (Regex.IsMatch(term.RoleKeyLabel, permissionGrant.TermPattern)) list.Add(term); } catch { } } } return list; }
private async static Task<long> UpdatePermissionGrant(PermissionGrant permissionGrant) { string commandText = "Update PermissionGrants set PermissionId = @permissionId, Type = @type, IsExactPattern = @isExactPattern, TermPattern = @termPattern, TermExactPattern = @termExactPattern where Id = @id"; Dictionary<string, object> parameters = new Dictionary<string, object>(); parameters.Add("@id", permissionGrant.Id); parameters.Add("@permissionId", permissionGrant.PermissionId); parameters.Add("@type", permissionGrant.Type); parameters.Add("@isExactPattern", permissionGrant.IsExactPattern ? 1 : 0); parameters.Add("@termPattern", permissionGrant.TermPattern); parameters.Add("@termExactPattern", permissionGrant.TermExactPattern); long results; using (var conn = await DataAccessBase.GetOpenAsync(DataAccessBase.QuangAuthConn)) { var id = await conn.ExecuteAsync(commandText, parameters); results = id; } return results; }
public async static Task<IEnumerable<PermissionGrant>> GetAllPermissionGrantBelongToUser(long userId) { Dictionary<string, object> parameters = new Dictionary<string, object>(); IList<PermissionGrant> permissionGrants = new List<PermissionGrant>(); string sql = ""; sql += "select pg.* "; sql += "from PermissionGrants pg "; sql += "where pg.PermissionId in ( "; sql += " select t.PermissionId "; sql += " from ("; sql += " ("; sql += " select distinct up.PermissionId as PermissionId from UserPermissions as up where up.UserId = @userId "; sql += " )"; sql += " UNION DISTINCT "; sql += " ( select distinct gp.PermissionId as PermissionId "; sql += " from GroupUsers as gu "; sql += " inner join GroupPermissions as gp on gp.GroupId = gu.GroupId "; sql += " where gu.UserId = @userId "; sql += " )"; sql += " ) as t "; sql += ")"; parameters.Add("@userId", userId); using (var conn = await DataAccessBase.GetOpenAsync(DataAccessBase.QuangAuthConn)) { var rows = await conn.QueryAsync(sql, parameters); foreach (var row in rows) { var permissionGrant = new PermissionGrant(); permissionGrant.Id = Int32.Parse(row["Id"]); int type = 0; bool isExactPattern = false; if (!string.IsNullOrEmpty(row["Type"])) { type = int.Parse(row["Type"]); } if (!string.IsNullOrEmpty(row["IsExactPattern"])) { isExactPattern = bool.Parse(row["IsExactPattern"]); } permissionGrant.Type = type; permissionGrant.IsExactPattern = isExactPattern; permissionGrant.TermPattern = row["TermPattern"]; permissionGrant.TermExactPattern = row["TermExactPattern"]; permissionGrants.Add(permissionGrant); } } return permissionGrants; }
private async static Task<long> InsertPermissionGrant(PermissionGrant permissionGrant) { string commandText = "Insert into PermissionGrants (Id, PermissionId, Type, IsExactPattern, TermPattern, TermExactPattern) values (@id, @permissionId, @type, @isExactPattern, @termPattern, @termExactPattern)"; Dictionary<string, object> parameters = new Dictionary<string, object>(); parameters.Add("@id", null); parameters.Add("@permissionId", permissionGrant.PermissionId); parameters.Add("@type", permissionGrant.Type); parameters.Add("@isExactPattern", permissionGrant.IsExactPattern ? 1 : 0); parameters.Add("@termPattern", permissionGrant.TermPattern); parameters.Add("@termExactPattern", permissionGrant.TermExactPattern); long results; using (var conn = await DataAccessBase.GetOpenAsync(DataAccessBase.QuangAuthConn)) { var id = await conn.ExecuteAsync(commandText, parameters); results = id; } return results; }
public IEnumerable<PermissionGrant> GetAllPermissionGrantBelongToUser(int userId) { var parameters = new Dictionary<string, object>(); var list = (IList<PermissionGrant>)new List<PermissionGrant>(); const string commandText = "" + "select pg.* " + "from PermissionGrants pg " + "where pg.PermissionId in ( " + " select t.PermissionId " + " from (" + " (" + " select distinct up.PermissionId as PermissionId from UserPermissions as up where up.UserId = @userId " + " )" + " UNION DISTINCT " + " ( select distinct gp.PermissionId as PermissionId " + " from GroupUsers as gu " + " inner join GroupPermissions as gp on gp.GroupId = gu.GroupId " + " where gu.UserId = @userId " + " )" + " ) as t " + ")"; parameters.Add("@userId", userId); foreach (var dictionary in _database.Query(commandText, parameters)) { var permissionGrant = new PermissionGrant {Id = int.Parse(dictionary["Id"])}; int num = 0; bool flag = false; if (!string.IsNullOrEmpty(dictionary["Type"])) num = int.Parse(dictionary["Type"]); if (!string.IsNullOrEmpty(dictionary["IsExactPattern"])) flag = bool.Parse(dictionary["IsExactPattern"]); permissionGrant.Type = num; permissionGrant.IsExactPattern = flag; permissionGrant.TermPattern = dictionary["TermPattern"]; permissionGrant.TermExactPattern = dictionary["TermExactPattern"]; list.Add(permissionGrant); } return list; }
private int UpdatePermissionGrant(PermissionGrant permissionGrant) { return _database.Execute("Update PermissionGrants set PermissionId = @permissionId, Type = @type, IsExactPattern = @isExactPattern, TermPattern = @termPattern, TermExactPattern = @termExactPattern where Id = @id", new Dictionary<string, object>() { { "@id", permissionGrant.Id }, { "@permissionId", permissionGrant.PermissionId }, { "@type", permissionGrant.Type }, { "@isExactPattern", permissionGrant.IsExactPattern ? 1 : 0 }, { "@termPattern", permissionGrant.TermPattern }, { "@termExactPattern", permissionGrant.TermExactPattern } }); }
private int InsertPermissionGrant(PermissionGrant permissionGrant) { return _database.Execute("Insert into PermissionGrants (Id, PermissionId, Type, IsExactPattern, TermPattern, TermExactPattern) values (@id, @permissionId, @type, @isExactPattern, @termPattern, @termExactPattern)", new Dictionary<string, object>() { { "@id", null }, { "@permissionId", permissionGrant.PermissionId }, { "@type", permissionGrant.Type }, { "@isExactPattern", permissionGrant.IsExactPattern ? 1 : 0 }, { "@termPattern", permissionGrant.TermPattern }, { "@termExactPattern", permissionGrant.TermExactPattern } }); }
public IEnumerable<PermissionGrant> GetPermissionGrants(int permissionId) { const string commandText = "select * from PermissionGrants where PermissionId = @permissionId order by Id asc"; var parameters = new Dictionary<string, object> {{"@permissionId", permissionId}}; IList<PermissionGrant> list = new List<PermissionGrant>(); foreach (var dictionary in _database.Query(commandText, parameters)) { var permissionGrant = new PermissionGrant {Id = int.Parse(dictionary["Id"])}; var num = 0; var flag = false; if (!string.IsNullOrEmpty(dictionary["Type"])) num = int.Parse(dictionary["Type"]); if (!string.IsNullOrEmpty(dictionary["IsExactPattern"])) flag = bool.Parse(dictionary["IsExactPattern"]); permissionGrant.Type = num; permissionGrant.IsExactPattern = flag; permissionGrant.TermPattern = dictionary["TermPattern"]; permissionGrant.TermExactPattern = dictionary["TermExactPattern"]; list.Add(permissionGrant); } return list; }