示例#1
0
        public void AddToRoleAsync_UserIsInRole_DoesNotThrow()
        {
            var user = new User(mMembershipFakeFactory.UserEnabledWithEmail);
            var role = mMembershipFakeFactory.AdminRole;

            UserRoleInfoProvider.AddUserToRole(mMembershipFakeFactory.UserEnabledWithEmail, role);

            CMSAssert.All(
                () => Assert.IsNotNull(UserRoleInfoProvider.GetUserRoleInfo(user.Id, role.RoleID)),
                () => Assert.DoesNotThrow(() => mUserStore.AddToRoleAsync(user, role.RoleName).Wait()));
        }
示例#2
0
        public void IsInRoleAsync_UserInAllRoles_ExpectedResult()
        {
            var userInfo = mMembershipFakeFactory.UserEnabledWithEmail;

            UserRoleInfoProvider.AddUserToRole(userInfo, mMembershipFakeFactory.AdminRole);
            UserRoleInfoProvider.AddUserToRole(userInfo, mMembershipFakeFactory.MemberRole);

            var user = new User(userInfo);

            CMSAssert.All(
                async() => Assert.IsTrue(await mUserStore.IsInRoleAsync(user, MembershipFakeFactory.ROLE_ADMIN), "Admin role missing"),
                async() => Assert.IsTrue(await mUserStore.IsInRoleAsync(user, MembershipFakeFactory.ROLE_MEMBER), "Member role missing"));
        }
示例#3
0
        public void Roles_DisabledUserInAllRoles_AllRoleNames()
        {
            var userInfo = mMembershipFakeFactory.UserDisabledWithEmail;

            UserRoleInfoProvider.AddUserToRole(userInfo, mMembershipFakeFactory.AdminRole);
            UserRoleInfoProvider.AddUserToRole(userInfo, mMembershipFakeFactory.MemberRole);

            var user = new User(userInfo);

            CMSAssert.All(
                () => Assert.AreEqual(2, user.Roles.Count()),
                () => Assert.IsTrue(user.Roles.Contains(MembershipFakeFactory.ROLE_ADMIN), "Admin role missing"),
                () => Assert.IsTrue(user.Roles.Contains(MembershipFakeFactory.ROLE_MEMBER), "Member role missing"));
        }
示例#4
0
        public async Task GetRolesAsync_UserInAllRoles_AllRoleNames()
        {
            var userInfo = mMembershipFakeFactory.UserEnabledWithEmail;

            UserRoleInfoProvider.AddUserToRole(userInfo, mMembershipFakeFactory.AdminRole);
            UserRoleInfoProvider.AddUserToRole(userInfo, mMembershipFakeFactory.MemberRole);

            var user  = new User(userInfo);
            var roles = await mUserStore.GetRolesAsync(user);

            CMSAssert.All(
                () => Assert.AreEqual(2, roles.Count),
                async() => Assert.IsTrue(await mUserStore.IsInRoleAsync(user, MembershipFakeFactory.ROLE_ADMIN), "Admin role missing"),
                async() => Assert.IsTrue(await mUserStore.IsInRoleAsync(user, MembershipFakeFactory.ROLE_MEMBER), "Member role missing"));
        }
示例#5
0
        public async Task RemoveFromRoleAsync_UserIsInRole_UserRoleInfoDeletedUserAndRoleExists()
        {
            var role = mMembershipFakeFactory.AdminRole;
            var user = new User(mMembershipFakeFactory.UserEnabledWithEmail);

            UserRoleInfoProvider.AddUserToRole(mMembershipFakeFactory.UserEnabledWithEmail, mMembershipFakeFactory.AdminRole);

            await mUserStore.RemoveFromRoleAsync(user, role.RoleName);

            CMSAssert.All(
                () => Assert.AreEqual(0, UserRoleInfoProvider.GetUserRoles().Count),
                () => Assert.IsNull(UserRoleInfoProvider.GetUserRoleInfo(user.Id, role.RoleID)),
                () => Assert.IsNotNull(RoleInfoProvider.GetRoleInfo(role.RoleID)),
                () => Assert.IsNotNull(UserInfoProvider.GetUserInfo(user.Id)));
        }
示例#6
0
文件: UserStore.cs 项目: pha4/kentico
        /// <summary>
        /// Adds <see cref="User"/> to <see cref="Role"/>.
        /// </summary>
        /// <param name="user">User entity.</param>
        /// <param name="roleName">Role name.</param>
        public Task AddToRoleAsync(User user, string roleName)
        {
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }

            if (String.IsNullOrWhiteSpace(roleName))
            {
                throw new ArgumentException("Argument cannot be null or empty", nameof(roleName));
            }

            UserRoleInfoProvider.AddUserToRole(user.Id, GetRoleByRoleName(roleName, SiteID).RoleID);

            return(Task.FromResult(0));
        }
示例#7
0
        public async Task PasswordSignInAsync_CorrectCredentials_AdminUser_UserSignedIn(string userName, string password)
        {
            var user = UserInfoProvider.GetUserInfo(userName);

            UserRoleInfoProvider.AddUserToRole(user, mMembershipFakeFactory.AdminRole);
            var result = await mSignInManager.PasswordSignInAsync(user.UserName, password, false, false);

            var claims = mOwinContext.Authentication.AuthenticationResponseGrant.Identity.Claims;

            CMSAssert.All(
                () => Assert.AreEqual(SignInStatus.Success, result),
                () => Assert.AreEqual(5, claims.Count()),
                () => Assert.IsTrue(claims.Any(x => x.Value == user.UserID.ToString()), "ID claim missing"),
                () => Assert.IsTrue(claims.Any(x => x.Value == user.UserName), "Name claim missing"),
                () => Assert.IsTrue(claims.Any(x => x.Value == user.UserSecurityStamp), "Security stamp claim missing"),
                () => Assert.IsTrue(claims.Any(x => x.Value == MembershipFakeFactory.ROLE_ADMIN), "Role claim missing"));
        }
示例#8
0
        public async Task SignOut_CorrectCredentials_AdminUser_UserSignedInAndOut(string userName, string password)
        {
            var user = UserInfoProvider.GetUserInfo(userName);

            UserRoleInfoProvider.AddUserToRole(user, mMembershipFakeFactory.AdminRole);

            var signInResult = await mSignInManager.PasswordSignInAsync(user.UserName, password, false, false);

            var signedInClaimsCount = mOwinContext.Authentication.AuthenticationResponseGrant.Identity.Claims.Count();

            mOwinContext.Authentication.SignOut(DefaultAuthenticationTypes.ApplicationCookie);

            CMSAssert.All(
                () => Assert.AreEqual(SignInStatus.Success, signInResult),
                () => Assert.AreEqual(5, signedInClaimsCount),
                () => Assert.IsNull(mOwinContext.Authentication.AuthenticationResponseGrant));
        }
示例#9
0
        public async Task SignInAsync_AdminUser_UserSignedInUnconditionally(string userName, string password)
        {
            var userInfo = UserInfoProvider.GetUserInfo(userName);

            UserRoleInfoProvider.AddUserToRole(userInfo, mMembershipFakeFactory.AdminRole);
            var user = new User(userInfo);

            await mSignInManager.SignInAsync(user, false, false);

            var claims = mOwinContext.Authentication.AuthenticationResponseGrant.Identity.Claims;

            CMSAssert.All(
                () => Assert.AreEqual(5, claims.Count()),
                () => Assert.IsTrue(claims.Any(x => x.Value == user.Id.ToString()), "ID claim missing"),
                () => Assert.IsTrue(claims.Any(x => x.Value == user.UserName), "Name claim missing"),
                () => Assert.IsTrue(claims.Any(x => x.Value == user.SecurityStamp), "Security stamp claim missing"),
                () => Assert.IsTrue(claims.Any(x => x.Value == MembershipFakeFactory.ROLE_ADMIN), "Role claim missing"));
        }
示例#10
0
    /// <summary>
    /// Saves roles of specified user.
    /// </summary>
    private void SaveRoles(int userID)
    {
        // Load user's roles
        if (!currentRolesLoaded)
        {
            LoadCurrentRoles();
        }

        // Remove old items
        string newValues = ValidationHelper.GetString(usRoles.Value, null);
        string items     = DataHelper.GetNewItemsInList(newValues, currentValues);

        if (!String.IsNullOrEmpty(items))
        {
            string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            if (newItems != null)
            {
                // Removes relationship between user and role
                foreach (string item in newItems)
                {
                    int roleID = ValidationHelper.GetInteger(item, 0);
                    UserRoleInfoProvider.RemoveUserFromRole(userID, roleID);
                }
            }
        }

        // Add new items
        items = DataHelper.GetNewItemsInList(currentValues, newValues);
        if (!String.IsNullOrEmpty(items))
        {
            string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            if (newItems != null)
            {
                // Add relationship between user and role
                foreach (string item in newItems)
                {
                    int roleID = ValidationHelper.GetInteger(item, 0);
                    UserRoleInfoProvider.AddUserToRole(userID, roleID);
                }
            }
        }
    }
示例#11
0
        /// <summary>
        /// Assigns CMS and AD roles to user.
        /// </summary>
        /// <param name="user">AD user</param>
        /// <param name="userInfo">CMS user</param>
        /// <param name="userRoles">Collection of <see cref="RoleInfo"/> objects user is in – infos are supposed to contain RoleGUID.</param>
        /// <param name="site">CMS roles</param>
        /// <param name="siteInfo">Site info object</param>
        private static void SetMemberships(IPrincipalObject user, UserInfo userInfo, SiteInfo siteInfo, ICollection <RoleInfo> userRoles, KeyValuePair <string, List <Guid> > site)
        {
            var roleGuids = Enumerable.Empty <Guid>()
                            .Union(site.Value)   // CMS role GUIDs user should be in
                            .Union(user.Groups); // AD role GUIDs user should be in (groups in which the user participates in AD and are imported to CMS)

            foreach (RoleInfo roleInfo in roleGuids
                     .Except(userRoles.Select(userRole => userRole.RoleGUID))
                     .Select(groupId => RoleInfoProvider.GetRoleInfoByGUID(groupId, siteInfo.SiteID))
                     .Where(roleInfo => (roleInfo != null)))
            {
                // Add user to the role
                UserRoleInfoProvider.AddUserToRole(userInfo, roleInfo);

                // Update collection of user roles (to reflect real roles user is in)
                userRoles.Add(roleInfo);

                MessageLog.LogEvent(ResHelper.GetString("Log_AssigningUserToRole", userInfo.UserName, roleInfo.RoleDisplayName));
            }
        }
        public void SetUserRole(int UserID, string RoleName, string SiteName, bool RoleToggle)
        {
            var Role = _Helper.GetRole(RoleName, SiteName, new string[] { "RoleID" });

            if (RoleToggle)
            {
                if (UserRoleInfoProvider.GetUserRoleInfo(UserID, Role.RoleID) == null)
                {
                    UserRoleInfoProvider.AddUserToRole(UserID, Role.RoleID);
                }
            }
            else
            {
                var ExistingUserRole = UserRoleInfoProvider.GetUserRoleInfo(UserID, Role.RoleID);
                if (ExistingUserRole != null)
                {
                    ExistingUserRole.Delete();
                }
            }
        }
示例#13
0
    private void SaveUsers()
    {
        if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.Users", "ManageUserRoles"))
        {
            RedirectToAccessDenied("CMS.Users", "ManageUserRoles");
        }

        bool          falseValues = false;
        bool          saved       = false;
        StringBuilder errors      = new StringBuilder();

        // Remove old items
        string newValues = ValidationHelper.GetString(usUsers.Value, null);
        string items     = DataHelper.GetNewItemsInList(newValues, currentValues);

        if (!String.IsNullOrEmpty(items))
        {
            string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            if (newItems != null)
            {
                // Add all new items to user
                foreach (string item in newItems)
                {
                    int userId = ValidationHelper.GetInteger(item, 0);

                    // Check permissions
                    string result = ValidateGlobalAndDeskAdmin(userId);
                    if (result != String.Empty)
                    {
                        errors.AppendLine(result);
                        falseValues = true;
                        continue;
                    }
                    else
                    {
                        var uri = UserRoleInfoProvider.GetUserRoleInfo(userId, roleID);
                        UserRoleInfoProvider.DeleteUserRoleInfo(uri);

                        saved = true;
                    }
                }
            }
        }

        // Add new items
        items = DataHelper.GetNewItemsInList(currentValues, newValues);
        if (!String.IsNullOrEmpty(items))
        {
            string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            if (newItems != null)
            {
                DateTime dt = ValidationHelper.GetDateTime(hdnDate.Value, DateTimeHelper.ZERO_TIME);

                // Add all new items to user
                foreach (string item in newItems)
                {
                    int userId = ValidationHelper.GetInteger(item, 0);

                    // Check permissions
                    string result = ValidateGlobalAndDeskAdmin(userId);
                    if (result != String.Empty)
                    {
                        errors.AppendLine(result);
                        falseValues = true;
                        continue;
                    }
                    else
                    {
                        UserRoleInfoProvider.AddUserToRole(userId, roleID, dt);
                        saved = true;
                    }
                }
            }
        }

        if (errors.Length > 0)
        {
            ShowError(GetString("general.saveerror"), errors.ToString(), null);
        }

        if (falseValues)
        {
            currentValues = GetRoleUsers();
            usUsers.Value = currentValues;
        }

        if (saved)
        {
            ShowChangesSaved();
        }

        usUsers.Reload(true);
    }
示例#14
0
    private void SaveUsers()
    {
        if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Users", "ManageUserRoles"))
        {
            RedirectToCMSDeskAccessDenied("CMS.Users", "ManageUserRoles");
        }

        bool falseValues = false;
        bool saved       = false;

        // Remove old items
        string newValues = ValidationHelper.GetString(usUsers.Value, null);
        string items     = DataHelper.GetNewItemsInList(newValues, currentValues);

        if (!String.IsNullOrEmpty(items))
        {
            string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            if (newItems != null)
            {
                // Add all new items to user
                foreach (string item in newItems)
                {
                    int userId = ValidationHelper.GetInteger(item, 0);

                    // Check permissions
                    string result = ValidateGlobalAndDeskAdmin(userId);
                    if (result != String.Empty)
                    {
                        lblError.Visible = true;
                        lblError.Text   += result;
                        falseValues      = true;
                        continue;
                    }
                    else
                    {
                        UserRoleInfoProvider.RemoveUserFromRole(userId, roleID);
                        saved = true;
                    }
                }
            }
        }

        // Add new items
        items = DataHelper.GetNewItemsInList(currentValues, newValues);
        if (!String.IsNullOrEmpty(items))
        {
            string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            if (newItems != null)
            {
                DateTime dt = ValidationHelper.GetDateTime(hdnDate.Value, DateTimeHelper.ZERO_TIME);

                // Add all new items to user
                foreach (string item in newItems)
                {
                    int userId = ValidationHelper.GetInteger(item, 0);

                    // Check permissions
                    string result = ValidateGlobalAndDeskAdmin(userId);
                    if (result != String.Empty)
                    {
                        lblError.Visible = true;
                        lblError.Text   += result;
                        falseValues      = true;
                        continue;
                    }
                    else
                    {
                        UserRoleInfoProvider.AddUserToRole(userId, roleID, dt);
                        saved = true;
                    }
                }
            }
        }

        if (falseValues)
        {
            currentValues = GetRoleUsers();
            usUsers.Value = currentValues;
        }

        if (saved)
        {
            lblInfo.Visible = true;
            lblInfo.Text    = GetString("General.ChangesSaved");
        }

        usUsers.Reload(true);
    }
示例#15
0
    /// <summary>
    /// Saves data.
    /// </summary>
    private void SaveData()
    {
        // Check "modify" permission
        if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Users", "ManageUserRoles"))
        {
            RedirectToAccessDenied("CMS.Users", "Manage user roles");
        }

        bool   saved  = false;
        string result = ValidateGlobalAndDeskAdmin(ui);

        if (result != String.Empty)
        {
            lblErrorDeskAdmin.Visible = true;
            lblErrorDeskAdmin.Text    = result;
            return;
        }

        // Remove old items
        string newValues = ValidationHelper.GetString(usRoles.Value, null);
        string items     = DataHelper.GetNewItemsInList(newValues, currentValues);

        this.lblInfo.Visible = false;

        if (!String.IsNullOrEmpty(items))
        {
            string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            if (newItems != null)
            {
                // Add all new items to site
                foreach (string item in newItems)
                {
                    int roleID = ValidationHelper.GetInteger(item, 0);
                    UserRoleInfoProvider.RemoveUserFromRole(userId, roleID);
                }

                saved = true;
            }
        }

        // Add new items
        items = DataHelper.GetNewItemsInList(currentValues, newValues);
        if (!String.IsNullOrEmpty(items))
        {
            string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            if (newItems != null)
            {
                DateTime dt = ValidationHelper.GetDateTime(hdnDate.Value, DateTimeHelper.ZERO_TIME);

                // Add all new items to site
                foreach (string item in newItems)
                {
                    int roleID = ValidationHelper.GetInteger(item, 0);
                    UserRoleInfoProvider.AddUserToRole(userId, roleID, dt);
                }

                saved = true;
            }
        }

        if (saved)
        {
            lblInfo.Visible = true;
            usRoles.Reload(true);
        }
    }
示例#16
0
    private void SaveUsers()
    {
        if (!CheckPermissions("cms.roles", PERMISSION_MODIFY))
        {
            return;
        }

        bool falseValues = false;
        bool saved       = false;

        // Remove old items
        string        newValues    = ValidationHelper.GetString(usUsers.Value, null);
        string        items        = DataHelper.GetNewItemsInList(newValues, currentValues);
        StringBuilder errorMessage = new StringBuilder();

        if (!String.IsNullOrEmpty(items))
        {
            string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            if (newItems != null)
            {
                // Add all new items to user
                foreach (string item in newItems)
                {
                    int userId = ValidationHelper.GetInteger(item, 0);

                    // Check permissions
                    string result = ValidateGlobalAndDeskAdmin(userId);
                    if (result != String.Empty)
                    {
                        errorMessage.Append(result);
                        falseValues = true;
                        continue;
                    }
                    else
                    {
                        UserRoleInfoProvider.RemoveUserFromRole(userId, RoleID);
                        saved = true;
                    }
                }
            }
        }

        // Add new items
        items = DataHelper.GetNewItemsInList(currentValues, newValues);
        if (!String.IsNullOrEmpty(items))
        {
            string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            if (newItems != null)
            {
                // Add all new items to user
                foreach (string item in newItems)
                {
                    int userId = ValidationHelper.GetInteger(item, 0);

                    // Check permissions
                    string result = ValidateGlobalAndDeskAdmin(userId);
                    if (result != String.Empty)
                    {
                        errorMessage.Append(result);
                        falseValues = true;
                        continue;
                    }
                    else
                    {
                        UserRoleInfoProvider.AddUserToRole(userId, RoleID);
                        saved = true;
                    }
                }
            }
        }
        if (errorMessage.Length > 0)
        {
            ShowError(errorMessage.ToString());
        }

        if (falseValues)
        {
            currentValues = GetRoleUsers();
            usUsers.Value = currentValues;
            usUsers.Reload();
        }

        if (saved)
        {
            ShowChangesSaved();
        }
    }
示例#17
0
    /// <summary>
    /// Saves data.
    /// </summary>
    private void SaveData()
    {
        // Check "modify" permission
        if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.Users", "ManageUserRoles"))
        {
            RedirectToAccessDenied("CMS.Users", "Manage user roles");
        }

        bool   saved  = false;
        string result = ValidateGlobalAndDeskAdmin();

        if (result != String.Empty)
        {
            ShowError(result);
            return;
        }

        string selectorValues = ValidationHelper.GetString(usRoles.Value, null);

        // Remove old items
        string items = DataHelper.GetNewItemsInList(selectorValues, mCurrentValues);

        if (!String.IsNullOrEmpty(items))
        {
            string[] newItems = items.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            if (newItems.Any())
            {
                // Remove all old items from site
                foreach (string item in newItems)
                {
                    int roleID = ValidationHelper.GetInteger(item, 0);

                    var uri = UserRoleInfoProvider.GetUserRoleInfo(mUserId, roleID);
                    UserRoleInfoProvider.DeleteUserRoleInfo(uri);
                }

                saved = true;
            }
        }

        // Add new items
        items = DataHelper.GetNewItemsInList(mCurrentValues, selectorValues);
        if (!String.IsNullOrEmpty(items))
        {
            string[] newItems = items.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            if (newItems.Any())
            {
                DateTime dt = ValidationHelper.GetDateTime(hdnDate.Value, DateTimeHelper.ZERO_TIME);

                // Add all new items to site
                foreach (string item in newItems)
                {
                    int roleID = ValidationHelper.GetInteger(item, 0);
                    UserRoleInfoProvider.AddUserToRole(mUserId, roleID, dt);
                }

                saved = true;
            }
        }

        if (saved)
        {
            ShowChangesSaved();
            usRoles.Reload(true);
        }
    }
 /// <summary>
 ///
 /// </summary>
 /// <param name="UserID"></param>
 /// <param name="RoleID"></param>
 private void HandleUserRole(int UserID, int RoleID)
 {
     UserRoleInfoProvider.AddUserToRole(UserID, RoleID);
 }