public async Task <ActionResult> AddPermission(SecurityAdminAction securityAdminAction)
        {
            if (securityAdminAction != null &&
                securityAdminAction.PresidentId != null &&
                securityAdminAction.UserId != null)
            {
                var user = await _UserManager.FindByIdAsync(securityAdminAction.UserId);

                var claim = new Claim(
                    securityAdminAction.Permission,
                    securityAdminAction.PresidentId);

                var claims = await _UserManager.GetClaimsAsync(user);

                /*
                 * var removeThisClaim = (
                 *  from temp in claims
                 *  where temp.Type == SecurityConstants.Claim_LevelOfAwesomeness
                 *  select temp
                 *  ).FirstOrDefault();
                 *
                 * if (removeThisClaim != null)
                 * {
                 *  await _UserManager.RemoveClaimAsync(user, removeThisClaim);
                 * }
                 */

                await _UserManager.AddClaimAsync(user, claim);
            }

            return(RedirectToAction("Index"));
        }
        public ActionResult RemoveSubscription(
            SecurityAdminAction securityAdminAction)
        {
            if (securityAdminAction != null &&
                securityAdminAction.UserId != null)
            {
                _SubscriptionService.RemoveSubscription(
                    GetSelectedUsername(securityAdminAction));
            }

            return(RedirectToAction("Index"));
        }
        public async Task <ActionResult> RemoveFromGroup(SecurityAdminAction securityAdminAction)
        {
            if (securityAdminAction != null &&
                securityAdminAction.RoleId != null &&
                securityAdminAction.UserId != null)
            {
                var role = await _RoleManager.FindByIdAsync(securityAdminAction.RoleId);

                var user = await _UserManager.FindByIdAsync(securityAdminAction.UserId);

                await _UserManager.RemoveFromRoleAsync(user, role.Name);
            }

            return(RedirectToAction("Index"));
        }
        private string GetSelectedUsername(SecurityAdminAction securityAdminAction)
        {
            var allUsers = _UserManager.Users.ToList();

            var username = (from temp in allUsers
                            where temp.Id == securityAdminAction.UserId
                            select temp).FirstOrDefault();

            if (username != null)
            {
                return(username.UserName);
            }
            else
            {
                return(securityAdminAction.UserId);
            }
        }
        public IActionResult Index()
        {
            var model = new SecurityAdminAction();

            model.Presidents =
                AdaptToSelectListItems(_SponsorService.GetSponsors());

            model.Roles = AdaptToSelectListItems(_RoleManager.Roles.ToList());

            model.Users = AdaptToSelectListItems(_UserManager.Users.OrderBy(x => x.UserName).ToList());

            model.Permissions = new List <SelectListItem>();

            model.Permissions.Add(new SelectListItem()
            {
                Value = SecurityConstants.PermissionName_Edit,
                Text  = SecurityConstants.PermissionName_Edit
            });

            model.Permissions.Add(new SelectListItem()
            {
                Value = SecurityConstants.PermissionName_View,
                Text  = SecurityConstants.PermissionName_View
            });

            model.Claims = GetAllClaims();

            model.SubscriptionTypes = new List <SelectListItem>();

            model.SubscriptionTypes.Add(new SelectListItem()
            {
                Value = SecurityConstants.SubscriptionType_Basic,
                Text  = SecurityConstants.SubscriptionType_Basic
            });

            model.SubscriptionTypes.Add(new SelectListItem()
            {
                Value = SecurityConstants.SubscriptionType_Ultimate,
                Text  = SecurityConstants.SubscriptionType_Ultimate
            });

            return(View(model));
        }
        public async Task <ActionResult> RemovePermission(SecurityAdminAction securityAdminAction)
        {
            if (securityAdminAction != null &&
                securityAdminAction.PresidentId != null &&
                securityAdminAction.UserId != null)
            {
                var user = await _UserManager.FindByIdAsync(securityAdminAction.UserId);

                var claims = await _UserManager.GetClaimsAsync(user);

                var removeThisClaim = (
                    from temp in claims
                    where temp.Type == securityAdminAction.Permission
                    select temp
                    ).FirstOrDefault();

                if (removeThisClaim != null)
                {
                    await _UserManager.RemoveClaimAsync(user, removeThisClaim);
                }
            }

            return(RedirectToAction("Index"));
        }