/// <summary> /// This instance is allowed to call only from test bed - todo security /// </summary> /// <param name="userName">The logged in user name</param> /// <param name="rbacName">The overridden rbac name, empty will use user's default</param> /// <param name="roleName">The overriden role name, empty will use user's default</param> public Rbac(string userName, string rbacName, string roleName) { //no cache will be implemented DataManager.Manager manager = new DataManager.Manager(false); RbacUser user = new RbacUser(userName); if (!string.IsNullOrEmpty(roleName)) { user.Role = new RbacRole(roleName); //override role } if (user.Role == null) { RbacException.Raise(string.Format("The role '{0}' is not found!", roleName), RbacExceptionCategories.Repository); } Rbac dbRbac = null; if (!string.IsNullOrEmpty(rbacName)) { dbRbac = manager.GetRbac(rbacName); //override rbac } else { dbRbac = manager.GetRbac(user.Role.RbacId); } if (dbRbac == null) { RbacException.Raise(string.Format("The rbac '{0}' was not defined yet!", rbacName), RbacExceptionCategories.Repository); } dbRbac.User = user; Assign(dbRbac); }
public static void AddParameter(this RbacUser user, string paramName, string paramValue) { if (user != null) { RbacParameter newParam = new DataManager.Manager(false).AddOrUpdateUserParameter(user.UserId, paramName, paramValue); user.Parameters.Add(newParam.Name, newParam.Value); } }
public void Export(string fileName) { Rbac rbac = new DataManager.Manager(false).GetRbac(this.Name); RbacEngineWeb wRbac = new RbacEngineWeb(rbac); StreamWriter sw = new StreamWriter(fileName); var s = new System.Xml.Serialization.XmlSerializer(wRbac.GetType()); s.Serialize(sw, wRbac); sw.Close(); }
public static RbacEngineWeb Save(RbacEngineWeb rbacEngineWeb) { Rbac rbac = GetRbac(rbacEngineWeb.Name); rbac.Description = rbacEngineWeb.Description; rbac.ConnectionString = rbacEngineWeb.ConnectionString; rbac.MetaDataRbac = rbacEngineWeb.MetaDataRbac; rbac.MetaDataEntitlements = rbacEngineWeb.MetaDataEntitlements; rbac = new DataManager.Manager().AddOrUpdate(rbac); return(rbacEngineWeb); }
public static Rbac GetRbac(string rbacName) { Rbac dbRbac = new DataManager.Manager(false).GetRbac(rbacName); if (dbRbac == null) { RbacException.Raise(string.Format("Rbac '{0}' was not defined yet!", rbacName), RbacExceptionCategories.Web); } return(dbRbac); }
/// <summary> /// This will refresh the rule from the meta data, byt merging latest changes from the database /// </summary> public void Refresh() { DataManager.Manager manager = new DataManager.Manager(false); List <RbacRole> roles = manager.GetRoles(this.RbacId); foreach (RbacRole role in roles) { role.MetaDataRbac = RbacMetaData.Merge(ConnectionString, role.MetaDataRbac); manager.AddOrUpdate(role); } }
public RbacRole(string roleName) { RbacRole role = new DataManager.Manager(false).GetRole(roleName); if (role == null) { RbacException.Raise(string.Format("Role '{0}' was not foundin repository!", roleName), RbacExceptionCategories.Repository); } Assign(role); ParseMetaData(); }
public RbacUser(string userName, string fullName, string email, RbacRole role, string password = null) { RbacUser newUser = new RbacUser(); newUser.UserName = userName; newUser.FullName = fullName; newUser.Email = email; newUser.Role = role; newUser = new DataManager.Manager(false).AddOrUpdate(newUser); Assign(newUser); Parameters = new ObservableDictionary <string, string>(); }
public RbacUser(string userName) { RbacUser user = new DataManager.Manager(false).GetUser(userName); if (user == null) { RbacException.Raise(string.Format("User not found with username as '{0}'!", userName), RbacExceptionCategories.Repository); } Assign(user); PopulateParameters(); }
public static RbacRole GetSample(Rbac rbac) { rbac = new DataManager.Manager(false).GetRbac(rbac.Name); RbacRole role = new RbacRole(); role.Name = "Sample Role"; role.Description = "Sample role description"; role.MetaDataEntitlements = rbac.MetaDataEntitlements; role.MetaDataRbac = rbac.MetaDataRbac; role.RbacId = rbac.RbacId; return(role); }
private void PopulateParameters() { this._Parameters = new ObservableDictionary <string, string>(); this._Parameters.PropertyChanged += ParametersPropertyChanged; this._Parameters.CollectionChanged += ParametersCollectionChanged; List <RbacParameter> parameters = new DataManager.Manager(false).GetParameters(this.UserId); foreach (RbacParameter parameter in parameters) { this._Parameters.Add(parameter.Name, parameter.Value); } }
public RbacUser Authenticate(string userName, string password) { RbacUser user = GetUser(userName); if (user == null) { RbacException.Raise("User name was not found!"); } user = new DataManager.Manager().Authenticate(userName, password); if (user == null) { RbacException.Raise("Incorrect password!"); } return(user); }
public Rbac(string userName) { Rbac rbacFromCache = RbacCache.Instance.GetContext(userName); if (rbacFromCache == null) { RbacUser user = new RbacUser(userName); Rbac dbRbac = new DataManager.Manager(false).GetRbac(user.Role.RbacId); dbRbac.User = user; Assign(dbRbac); RbacCache.Instance.Contexts.Add(userName, this); } else { Assign(rbacFromCache); } }
/// <summary> /// Instantiates a new Rbac Role /// </summary> /// <param name="rbacId">The rbac id it will belong to</param> /// <param name="name">Name of the new role</param> /// <param name="description">Description of the new role</param> /// <param name="metaDataRbac">Meta data of the role</param> /// <param name="metaDataEntitlements">Meta data of the entilements</param> public RbacRole(int rbacId, string name, string description, string metaDataRbac, string metaDataEntitlements) { if (rbacId == 0) { RbacException.Raise("Creation of role requires a valid rbacId!"); } Rbac rbac = new Framework.Rbac(); //create new role RbacRole newRole = new RbacRole(); newRole.RbacId = rbacId; newRole.Name = name; newRole.Description = description; newRole.MetaDataRbac = metaDataRbac; newRole.MetaDataEntitlements = metaDataEntitlements; newRole = new DataManager.Manager(false).AddOrUpdate(newRole); Assign(newRole); }
public Rbac CreateNew(string rbacName, string description, string connectionString, string metaDataEntitlement) { DataManager.Manager manager = new DataManager.Manager(false); if (manager.GetRbac(rbacName) != null) { RbacException.Raise(string.Format("'{0}' already exists! Please provide a different name.", rbacName), RbacExceptionCategories.Repository); } Rbac newRbac = new Rbac(); newRbac.Name = rbacName; newRbac.Description = description; newRbac.ConnectionString = connectionString; N("Generating meta data..."); newRbac.MetaDataRbac = RbacMetaData.Generate(newRbac.ConnectionString); N("Done!", LogMessageTypes.Success); N("Saving your rbac instance..."); Rbac rbac = manager.AddOrUpdate(newRbac); N("Done!", LogMessageTypes.Success); return(rbac); }