Beispiel #1
0
        public override string[] GetUsersInRole(string rolename)
        {
            MembershipDataContext context = CreateDataContext();

            IQueryable <User> query = from role in context.Roles
                                      join userRoles in context.UsersInRoles on role.RoleId equals userRoles.RoleId
                                      join user in context.Users on userRoles.UserId equals user.UserId
                                      where role.Name == rolename
                                      select user;

            string users = "";

            foreach (User user in query)
            {
                users += user.UserName + ",";
            }

            if (users.Length > 0)
            {
                users = users.Substring(0, users.Length - 1);
                return(users.Split(','));
            }

            return(new string[0]);
        }
Beispiel #2
0
        public override string[] GetRolesForUser(string username)
        {
            MembershipDataContext context = CreateDataContext();

            IQueryable <DataEntities.Role> query = from role in context.Roles
                                                   //join userRoles in context.UsersInRoles on role.RoleId equals userRoles.RoleId
                                                   //join user in context.Users on userRoles.UserId equals user.UserId
                                                   //where user.UserName == username
                                                   select role;

            string roles = "";

            foreach (DataEntities.Role role in query)
            {
                roles += role.Name + ",";
            }

            if (roles.Length > 0)
            {
                roles = roles.Substring(0, roles.Length - 1);
                return(roles.Split(','));
            }

            return(new string[0]);
        }
Beispiel #3
0
        public override bool IsUserInRole(string username, string rolename)
        {
            MembershipDataContext context = CreateDataContext();
            IQueryable <User>     query   = from role in context.Roles
                                            join userRoles in context.UsersInRoles on role.RoleId equals userRoles.RoleId
                                            join user in context.Users on userRoles.UserId equals user.UserId
                                            where role.Name == rolename && user.UserName == username
                                            select user;

            return(query.ToList().Count > 0);
        }
Beispiel #4
0
        public override string[] GetAllRoles()
        {
            string tmpRoleNames           = "";
            MembershipDataContext context = CreateDataContext();

            foreach (Role role in context.Roles)
            {
                tmpRoleNames += role.Name + ",";
            }

            if (tmpRoleNames.Length > 0)
            {
                // Remove trailing comma.
                tmpRoleNames = tmpRoleNames.Substring(0, tmpRoleNames.Length - 1);
                return(tmpRoleNames.Split(','));
            }

            return(new string[0]);
        }
Beispiel #5
0
        public override bool DeleteRole(string rolename, bool throwOnPopulatedRole)
        {
            if (!RoleExists(rolename))
            {
                throw new ProviderException("Role does not exist.");
            }

            if (throwOnPopulatedRole && GetUsersInRole(rolename).Length > 0)
            {
                throw new ProviderException("Cannot delete a populated role.");
            }

            MembershipDataContext context = CreateDataContext();

            context.Roles.DeleteAllOnSubmit(context.Roles.Where(r => r.Name == rolename));
            context.SubmitChanges();

            return(true);
        }
Beispiel #6
0
        public override void RemoveUsersFromRoles(string[] usernames, string[] rolenames)
        {
            MembershipDataContext context = CreateDataContext();

            context.ExecuteCommand(@"
                DELETE FROM UsersInRoles
                where exists 
                    (
                    select UsersInRoles.UserId 
                    from UsersInRoles as UR INNER JOIN
	                     Users ON UsersInRoles.UserId = Users.UserId INNER JOIN
                         Roles ON UsersInRoles.RoleId = Roles.RoleId INNER JOIN
	                     UsersInRoles ON UR.UserId = UsersInRoles.UserId AND UR.RoleId = UsersInRoles.RoleId
                    where 
                         Users.UserName IN ('') AND Roles.Name IN ('')
                    )
                ",
                                   String.Join(",", usernames),
                                   String.Join(",", rolenames));
        }
Beispiel #7
0
        /// <summary>Returns a collection of membership users for which the e-mail address field contains the specified e-mail address.</summary>
        /// <returns>A <see cref="T:System.Web.Security.MembershipUserCollection"></see> that contains a page of pageSize<see cref="T:System.Web.Security.MembershipUser"></see> objects beginning at the page specified by pageIndex.</returns>
        /// <param name="totalRecords">The total number of matched users.</param>
        /// <param name="pageIndex">The index of the page of results to return. pageIndex is zero-based.</param>
        /// <param name="emailToMatch">The e-mail address to search for.</param>
        /// <param name="pageSize">The size of the page of results to return.</param>
        /// <exception cref="T:System.ArgumentException">emailToMatch is longer than 256 characters.- or -pageIndex is less than zero.- or -pageSize is less than one.- or -pageIndex multiplied by pageSize plus pageSize minus one exceeds <see cref="F:System.Int32.MaxValue"></see>.</exception>
        public override MembershipUserCollection FindUsersByEmail(string emailToMatch, int pageIndex, int pageSize, out int totalRecords)
        {
            //
            // Calculate the first and last records
            //
            int firstUserIndex = pageIndex * pageSize;
            int lastUserIndex  = ((pageIndex * pageSize) + pageSize) - 1;

            if (pageIndex < 0)
            {
                throw new ArgumentException(Properties.Resources.PageIndex_bad, "pageIndex");
            }
            if (pageSize < 1)
            {
                throw new ArgumentException(Properties.Resources.PageSize_bad, "pageSize");
            }
            if (lastUserIndex > 0x7fffffff)
            {
                throw new ArgumentException(Properties.Resources.PageIndex_PageSize_bad, "pageIndex and pageSize");
            }

            //
            // Retrieve a users collection
            //
            MembershipDataContext membership = new MembershipDataContext(connectionString);

            System.Collections.Generic.IList <User> users = membership.Users.Where(us => us.Email == emailToMatch).ToList();
            totalRecords = users.Count;

            //
            // Enumerate the Membership.User and convert to MembershipUserCollection
            //
            MembershipUserCollection list = new MembershipUserCollection();

            for (int idx = firstUserIndex; idx <= lastUserIndex; idx++)
            {
                list.Add(new VivinaMembershipUser(users[idx]));
            }

            return(list);
        }
Beispiel #8
0
        public override void CreateRole(string rolename)
        {
            if (rolename.Contains(","))
            {
                throw new ArgumentException("Role names cannot contain commas.");
            }

            if (RoleExists(rolename))
            {
                throw new ProviderException("Role name already exists.");
            }

            Role role = new Role();

            role.Name            = rolename;
            role.LastUpdatedDate = DateTime.Now;
            role.ApplicationId   = Configuration.Application.Current.ApplicationId;

            MembershipDataContext context = CreateDataContext();

            context.Roles.InsertOnSubmit(role);
            context.SubmitChanges();
        }
Beispiel #9
0
 public ClientsManager(MembershipDataContext db,
                       ISecretHasher hasher)
 {
     this.db     = db;
     this.hasher = hasher;
 }
Beispiel #10
0
        public override bool RoleExists(string rolename)
        {
            MembershipDataContext context = CreateDataContext();

            return(context.Roles.Where(role => role.Name == rolename).FirstOrDefault() != null);
        }