public bool Enroll(string user, long structure, long container, string roleType)
        {
            var userObj = Get(_dbContext, user);
            if (userObj == null) throw new ArgumentException("\"user\" is a invalid argument");

            var containerObj = ContainerManager.Get(_dbContext, container);
            if (containerObj == null)
                throw new ArgumentException(
                    "\"structure\" or \"containerPrototype\" or \"container\" is a invalid argument");

            var roleTypeObj = RoleTypeManager.Get(_dbContext, structure, roleType);
            if (roleTypeObj == null) throw new ArgumentException("\"structure\" or \"roleType\" is a invalid argument");

            var enroll = new Enroll()
                             {
                                 User = userObj,
                                 Container = containerObj,
                                 RoleType = roleTypeObj
                             };

            _dbContext.Enrolls.Add(enroll);

            var changes = _dbContext.SaveChanges() != 0;

            if (changes)
                InvokeOnEnrollUser(null);

            return changes;
        }
Beispiel #2
0
        private void InvokeOnEnrollUser(Enroll enroll)
        {
            var eventArgs = new EnrollEventArgs(enroll, enroll.Container);

            if (_onEnrollUser != null)
                try
                {
                    _onEnrollUser(this, eventArgs);
                }catch(Exception e)
                {
                   DataBaseManager.Logger.Log(String.Format("InvokeOnEnrollUser fail - {0}", e.Message));
                }
        }
Beispiel #3
0
        public bool Enroll(string user, long structure, long container, string roleType, string password = null)
        {
            var userObj = Get(user);

            var containerObj = _db.Container.Get(container);

            var roleTypeObj = _db.RoleType.Get(structure, roleType);

            if (!ExisteRole(containerObj, roleTypeObj))
                return false; //TODO throw exception

            var pass = _db.DbContext.EnrollPassWords.Find(container, roleType, structure);
            if (pass != null)
                if (password == null || pass.Credential != AuthenticationManager.EncryptPassword(password))
                    return false;

            var enroll = _db.DbContext.Enrolls.Find(user, container, roleType, structure);
            if (enroll != null)
            {
                if (!enroll.Inherited)
                    return false; //TODO throw exception

                enroll.Inherited = false;
            }else
            {
                enroll = new Enroll()
                             {
                                 User = userObj,
                                 Container = containerObj,
                                 RoleType = roleTypeObj,
                                 Inherited = false,
                                 InheritedCount = 0
                             };

                _db.DbContext.Enrolls.Add(enroll);

                InvokeOnEnrollUser(enroll);
            }

            InheritedEnrollChilds(userObj, containerObj, roleTypeObj);

            InheritedEnrollParents(userObj, containerObj.Parent, roleTypeObj);

            return _db.DbContext.SaveChanges() != 0;
        }
Beispiel #4
0
        private bool EnrollInherited(User user, Container container, RoleType roleType)
        {
            var enroll = _db.DbContext.Enrolls.Find(user.Name, container.Id, roleType.Name, container.Type.StructureId);

            if (enroll != null)
            {
                enroll.InheritedCount += 1;

                return true;
            }

            enroll = new Enroll()
            {
                User = user,
                Container = container,
                RoleType = roleType,
                Inherited = true,
                InheritedCount = 1
            };

            _db.DbContext.Enrolls.Add(enroll);

            InvokeOnEnrollUser(enroll);

            return true;
        }
Beispiel #5
0
 public EnrollEventArgs(Enroll enroll, Container container)
 {
     Enroll = enroll;
     Container = container;
 }