示例#1
0
        /// <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);
        }
示例#2
0
 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);
     }
 }
示例#3
0
        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();
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        /// <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);
            }
        }
示例#7
0
        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();
        }
示例#8
0
        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>();
        }
示例#9
0
        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();
        }
示例#10
0
        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);
        }
示例#11
0
        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);
            }
        }
示例#12
0
        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);
        }
示例#13
0
        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);
            }
        }
示例#14
0
        /// <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);
        }
示例#15
0
        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);
        }