コード例 #1
0
        private async Task SignInAsync(
            HttpContext context,
            FaToolUserManager userManager,
            FaToolUser user,
            bool isPersistent)
        {
            var roles = await userManager.GetRolesAsync(user.Id);

            var userData = string.Join(";", roles);

            var ticket = new FormsAuthenticationTicket(
                1,
                user.UserName,
                DateTime.Now,
                DateTime.Now.AddDays(1),
                isPersistent,
                userData,
                FormsAuthentication.FormsCookiePath);

            string encryptedTicket = FormsAuthentication.Encrypt(ticket);

            var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);

            cookie.HttpOnly = true;
            context.Response.Cookies.Add(cookie);
        }
コード例 #2
0
        private ActionLink DeleteUserAction(FaToolUser user)
        {
            bool disabled = User.IsAdminUser() == false || user.IsAdminUser();

            return(new ActionLink(
                       "Delete User",
                       Url.Action("Delete", new { id = user.Id }), disabled));
        }
コード例 #3
0
        private ActionLink LockUserAction(FaToolUser user)
        {
            bool disabled = User.IsAdminUser() == false || user.IsAdminUser();

            return(new ActionLink(
                       "Lock/Unlock User",
                       Url.Action("Lockout", new { id = user.Id }), disabled));
        }
コード例 #4
0
        private ActionLink GrantRolesAction(FaToolUser user)
        {
            bool disabled = User.IsAdminUserOrAdminRole() == false;

            return(new ActionLink(
                       "Grant/Revoke Roles",
                       Url.Action("Roles", new { id = user.Id }), disabled));
        }
コード例 #5
0
        public UserViewModelBase(FaToolUser user, TProperties properties)
            : base(properties)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            User = user;
        }
コード例 #6
0
        public EditUserViewModel(
            FaToolUser user,
            FaToolPersonalProperties properties,
            IEnumerable <SelectListItem> countryOptions)
            : base(user, properties)
        {
            if (countryOptions == null)
            {
                throw new ArgumentNullException("countryOptions");
            }

            CountryOptions = countryOptions.ToArray();
        }
コード例 #7
0
        public async Task <ActionResult> Register(
            [Bind(Prefix = "Properties")] FaToolRegisterProperties properties)
        {
            if (ModelState.IsValid)
            {
                FaToolUser     user   = new FaToolUser(properties);
                IdentityResult result = await UserManager.CreateAccountAsync(
                    user,
                    properties.Password,
                    FaToolRoles.USER);

                if (result.Succeeded)
                {
                    if (User.IsAdminUserOrAdminRole())
                    {
                        return(this.Redirect(ShowUserAction(user).Url));
                    }
                    else
                    {
                        if (User.IsAuthenticated())
                        {
                            await AuthenticationManager.SignOutAsync();
                        }
                        // TODO implement email approve
                        //return View("RegisterWelcome");
                        return(RedirectToAction("Index", "Home"));
                    }
                }
                else
                {
                    AddErrors(result);

                    var model = new RegisterViewModel(
                        properties,
                        GetCountryOptions(properties.Country));

                    return(View("Register", model));
                }
            }
            else
            {
                var model = new RegisterViewModel(
                    properties,
                    GetCountryOptions(properties.Country));

                return(View("Register", model));
            }
        }
コード例 #8
0
        protected async Task <IEnumerable <SelectListItem> > GetRoleOptions(FaToolUser user)
        {
            var selectedRoles = await UserManager.GetRolesAsync(user.Id);

            var allRoles = await RoleManager
                           .Roles
                           .OrderBy(x => x.Name)
                           .ToArrayAsync();

            return(allRoles.Select(x => new SelectListItem()
            {
                Value = x.Name,
                Text = x.Name,
                Selected = selectedRoles.Contains(x.Name)
            }));
        }
コード例 #9
0
        private async Task <string> GenerateJwtTokenAsync(
            FaToolUserManager userManager,
            FaToolUser user)
        {
            var identity = await userManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);

            var claims       = identity.Claims;
            var key          = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SOME_RANDOM_KEY_DO_NOT_SHARE"));
            var creds        = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var expires      = DateTime.Now.AddMinutes(30);
            var issuer       = "http://fatool.com";
            var tokenHandler = new JwtSecurityTokenHandler();

            var token = new JwtSecurityToken(
                issuer,
                issuer,
                claims,
                expires: expires,
                signingCredentials: creds
                );

            return(tokenHandler.WriteToken(token));
        }
コード例 #10
0
 public EditUserRolesViewModel(FaToolUser user, IEnumerable <SelectListItem> roles)
     : base(user, new CheckList("SelectedRoles", roles))
 {
 }
コード例 #11
0
 public ChangePasswordViewModel(FaToolUser user)
     : this(user, new FaToolChangePasswordProperties())
 {
 }
コード例 #12
0
 public ChangePasswordViewModel(FaToolUser user, FaToolChangePasswordProperties properties)
     : base(user, properties)
 {
 }
コード例 #13
0
 private ActionLink ShowUserAction(FaToolUser user)
 {
     return(new ActionLink(
                "Show",
                Url.Action("User", new { id = user.Id })));
 }
コード例 #14
0
 public LockoutUserViewModel(FaToolUser user, FaToolLockoutProperties properties)
     : base(user, properties)
 {
 }
コード例 #15
0
 public LockoutUserViewModel(FaToolUser user)
     : this(user, new FaToolLockoutProperties())
 {
 }
コード例 #16
0
 public EditUserViewModel(
     FaToolUser user,
     IEnumerable <SelectListItem> countryOptions)
     : this(user, new FaToolPersonalProperties(user), countryOptions)
 {
 }
コード例 #17
0
 private ActionLink EditUserAction(FaToolUser user)
 {
     return(new ActionLink(
                "Edit User",
                Url.Action("Edit", new { id = user.Id })));
 }
コード例 #18
0
 private ActionLink ChangePasswordAction(FaToolUser user)
 {
     return(new ActionLink(
                "Change Password",
                Url.Action("ChangePassword", new { id = user.Id })));
 }