Beispiel #1
0
        public async Task <bool> SendMessageFromUser(CcRepUser user, Message message)
        {
            message.AddTo("*****@*****.**");

            message.Body = message.Body + "<br/><br/>" + $"Отправитель: {user.FullName} ({user.Email}).";

            var sender = SokovApiMail.GetInstance();

            var result = await sender.Send(message);

            return(true);
        }
Beispiel #2
0
        public async Task <ActionResult> LoginComplete(string code)
        {
            if (code == null)
            {
                return(RedirectToAction("Index", "Home"));
            }
            SsoAuthProvider provider = GetAuthProvider(StateHashSource.FromRequest);

            string token = await provider.requestAccessTokenByAuthCode(code);

            if (token != null)
            {
                try
                {
                    ActiveDirctoryUser userInfo = await provider.RequestUserData(token);

                    CcRepUser user = await UserManager.FindByNameAsync(userInfo.username);

                    if (user == null)
                    {
                        user = new CcRepUser {
                            UserName = userInfo.username, Email = userInfo.email, FullName = userInfo.name
                        };

                        string userId = await UserManager.CreateWithClaims(user);
                    }

                    ClaimsIdentity claim = await UserManager.CreateIdentityAsync(user,
                                                                                 DefaultAuthenticationTypes.ApplicationCookie);

                    AuthenticationManager.SignOut();
                    AuthenticationManager.SignIn(new AuthenticationProperties
                    {
                        IsPersistent = true
                    }, claim);

                    return(RedirectToAction("Index", "Home"));
                }
                catch (CantGetUserInfo exception)
                {
                    throw new HttpException("Bad access token parameter - " + exception.Message);
                }
                catch (DbEntityValidationException exception)
                {
                    throw new HttpException($"Ошибка! ({exception.Message})");
                    //return Content(ObjectInfo.Print(exception.EntityValidationErrors).ToString());
                }
            }

            throw new HttpException("Wrong parameters!");
        }
Beispiel #3
0
        // GET: System/CcRepUsers/Details/5
        public ActionResult Details(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            CcRepUser ccRepUser = db.Users.Find(id);

            if (ccRepUser == null)
            {
                return(HttpNotFound());
            }
            return(View(ccRepUser));
        }
Beispiel #4
0
        public ActionResult ManageUserAccess(string Id)
        {
            using (db)
            {
                CcRepUser UserModel = db.Users.Find(Id);

                if (UserModel != null)
                {
                    UserAccessAssignment ViewModel = new UserAccessAssignment(UserModel, db);

                    return(View(ViewModel));
                }
            }

            return(new HttpStatusCodeResult(404));
        }
Beispiel #5
0
        HeaderRep GetHeaderRep()
        {
            CcRepUser repUser = new CcRepUser()
            {
                FullName = "Петр Иванов",
                UserName = "******"
            };

            return(new HeaderRep()
            {
                BeginDate = DateTime.Now.AddMonths(-1),
                EndDate = DateTime.Now.AddMonths(1),
                CreateDate = DateTime.Now,
                UserLastEditedId = repUser.Id,
                UserLastEdited = repUser
            });
        }
Beispiel #6
0
        public static MultiSelectList GetUserRolesList(CcRepUser user, List <CcRepRole> roles)
        {
            var defaultSelected = user.Roles.Select(item => item.RoleId.ToString()).ToArray();

            List <SelectListItem> allItems = new List <SelectListItem>();

            roles.ForEach(Ct =>
            {
                allItems.Add(new SelectListItem()
                {
                    Text  = Ct.Desc,
                    Value = Ct.Id.ToString(),
                });
            });

            return(new MultiSelectList(allItems, "Value", "Text", defaultSelected));
        }
Beispiel #7
0
        public static MultiSelectList GetUserFilialsList(CcRepUser user, List <Filial> Filials)
        {
            string[] defaultSelected = user.Filials != null?user.Filials.Select(item => item.Filial.NCFilial.ToString()).ToArray() : Array.Empty <string>();

            List <SelectListItem> allItems = new List <SelectListItem>();

            Filials.ForEach(Ct =>
            {
                allItems.Add(new SelectListItem()
                {
                    Text  = $"{Ct.NCFilial}: {Ct.NameFilial}",
                    Value = Ct.NCFilial,
                });
            });

            return(new MultiSelectList(allItems, "Value", "Text", defaultSelected));
        }
Beispiel #8
0
        public UserAccessAssignment(CcRepUser user, CcRepContext db) : base()
        {
            Branches     = MultiSelectHelper.GetUserFilialsList(user, db.Filials.ToList());
            Roles        = MultiSelectHelper.GetUserRolesList(user, db.Roles.ToList());
            UserId       = user.Id;
            UserFullName = user.FullName;
            UserName     = user.UserName;
            Blocked      = user.Locked;


            FlAccess = user.Claims.Where(c => c.ClaimType == "FlAccess")
                       .Select(c => c.ClaimValue).SingleOrDefault();

            PdAccess = user.Claims.Where(c => c.ClaimType == "PdAccess")
                       .Select(c => c.ClaimValue).SingleOrDefault();

            AllBranches = user.Claims.Where(c => c.ClaimType == "showAllBranches")
                          .Select(c => Convert.ToBoolean(c.ClaimValue.ToLower())).SingleOrDefault();
        }
Beispiel #9
0
        public async Task <ActionResult> AddUser([Bind(Include = "UserName, Locked")] AddUser modelView)
        {
            if (ModelState.IsValid)
            {
                CcRepUser ExistingUser = await UserManager.FindByNameAsync(modelView.UserName);

                if (ExistingUser != null)
                {
                    TempData["Flash"] = "Данный пользователь уже существует в базе данных";

                    return(RedirectToAction("AddUser"));
                }

                var provider = GetAuthProvider(null);

                var finded = await provider.RequestUserDataByName(modelView.UserName);

                if (finded is null)
                {
                    TempData["Flash"] = "Введенный пользователь не был найден в ActiveDirectory";

                    return(RedirectToAction("AddUser"));
                }


                CcRepUser NewUser = new CcRepUser()
                {
                    UserName      = finded.username,
                    Locked        = modelView.Locked,
                    Email         = finded.email,
                    FullName      = finded.name,
                    SecurityStamp = Guid.NewGuid().ToString()
                };


                string userId = await UserManager.CreateWithClaims(NewUser);

                return(RedirectToAction("ManageUserAccess", "CcRepUsers", new { id = userId, Area = "System" }));
            }

            return(new HttpStatusCodeResult(404));
        }
Beispiel #10
0
        public ActionResult ManageUserAccess([Bind(Include = "SelectedBranches, SelectedRoles, UserId, Blocked, FlAccess, PdAccess, AllBranches")] UserAccessAssignment modelView)
        {
            if (modelView.UserId != null)
            {
                CcRepUser userModel = db.Users.Find(modelView.UserId);
                userModel.Locked = modelView.Blocked;

                foreach (UsersToFilials branch in userModel.Filials.ToList())
                {
                    db.UserrsToFilials.Remove(branch);
                }
                foreach (CcRepUserClaim claim in userModel.Claims.ToList())
                {
                    db.UserClaims.Remove(claim);
                }
                foreach (UsersToRoles roleUser in userModel.Roles.ToList())
                {
                    db.UserRoles.Remove(roleUser);
                }
                UpdateModel(userModel);


                if (modelView.AllBranches)
                {
                    var AllBranClaim = new CcRepUserClaim {
                        ClaimType = "showAllBranches", ClaimValue = modelView.AllBranches.ToString()
                    };
                    userModel.Claims.Add(AllBranClaim);
                }
                else if (modelView.SelectedBranches != null)
                {
                    foreach (var c in db.Filials.Where(co => modelView.SelectedBranches.Contains(co.NCFilial)))
                    {
                        userModel.Filials.Add(new UsersToFilials()
                        {
                            FilialId = c.NCFilial, UserId = userModel.Id
                        });
                    }
                }

                if (modelView.SelectedRoles != null)
                {
                    foreach (var c in db.Roles.Where(co => modelView.SelectedRoles.Contains(co.Id)))
                    {
                        UsersToRoles model = new UsersToRoles()
                        {
                            RoleId = c.Id, UserId = userModel.Id
                        };
                        userModel.Roles.Add(model);
                    }
                }

                var FlAccessClaim = new CcRepUserClaim {
                    ClaimType = "FlAccess", ClaimValue = modelView.FlAccess
                };
                var PdAccessClaim = new CcRepUserClaim {
                    ClaimType = "PdAccess", ClaimValue = modelView.PdAccess
                };

                userModel.Claims.Add(FlAccessClaim);
                userModel.Claims.Add(PdAccessClaim);

                // сохраняем изменения
                UserManager.UpdateAsync(userModel);

                db.Entry(userModel).State = EntityState.Modified;
                db.SaveChanges();

                return(Redirect(Request.UrlReferrer.ToString()));
            }

            return(new HttpStatusCodeResult(404));
        }