Esempio n. 1
0
        public ActionResult AddEditUser(AddEditUserViewModel model)
        {
            var user = _cdb.CtsUser.Include(s => s.CtsRoles)
                       .Where(x => x.Login == model.UserLogin)
                       .FirstOrDefault(s => s.Domain == model.UserDomain);

            if (user == null)
            {
                user = new CtsUser()
                {
                    Login  = model.UserLogin,
                    Domain = model.UserDomain
                };
                _cdb.CtsUser.Add(user);
            }
            foreach (var userRole in user.CtsRoles)
            {
                if (!model.CtsRoles.ContainsKey(userRole.RoleName))
                {
                    model.CtsRoles.Add(userRole.RoleName, true);
                }
            }

            user.CtsRoles.Clear();
            user.CtsRoles = model.CtsRoles?
                            .Where(x => x.Value)
                            .Select(x => _cdb.CtsRole.Find(x.Key))
                            .ToList();
            _cdb.SaveChanges();

            return(RedirectToAction(model.ReturnView ?? "index"));
        }
Esempio n. 2
0
        public static ICollection <CtsRole> GetUserRolesFromDb(IIdentity user)
        {
            var cdb       = new CtsDbContext();
            var userLogin = user.Name.Split(new char[] { '\\' }).Last();
            var domain    = user.Name.Split(new char[] { '\\' }).First();


            if (!(Cacher.Instance.TryRead(domain + userLogin + "Roles") is CtsUser ctsUser))
            {
                ctsUser = cdb.CtsUser.Where(x => x.Login == userLogin).FirstOrDefault(x => x.Domain == domain);
                if (ctsUser != null)
                {
                    cdb.Entry(ctsUser).Collection(x => x.CtsRoles).Load();
                    Cacher.Instance.Write(domain + userLogin + "Roles", ctsUser);
                }
                else
                {
                    ctsUser = new CtsUser();
                }
            }
            return(ctsUser.CtsRoles);
        }
Esempio n. 3
0
 public AddEditUserViewModel(CtsUser user, List <CtsRole> ctsRoles)
 {
     UserLogin  = user.Login;
     UserDomain = user.Domain;
     CtsRoles   = ctsRoles.ToDictionary(x => x.RoleName, x => user.CtsRoles.Contains(x));
 }