예제 #1
0
        /// <summary>
        /// Gets a list of the roles that a specified user is in for the configured applicationName.
        /// </summary>
        /// <returns>
        /// A string array containing the names of all the roles that the specified user is in for the configured applicationName.
        /// </returns>
        /// <param name="username">The user to return a list of roles for.</param>
        public override string[] GetRolesForUser(string username)
        {
            //Return if the user is not authenticated
            if (!HttpContext.Current.User.Identity.IsAuthenticated)
                return null;

            //Return if present in Cache
            var cacheKey = string.Format("UserRoles_{0}", username);
            if (HttpRuntime.Cache[cacheKey] != null)
                return (string[])HttpRuntime.Cache[cacheKey];

            //Get the roles from DB
            var userRoles = new string[] { };

            repository = new UnitOfWork();

            var user = repository.Users.GetAll(includeProperties:"UsersRole",filter:u=>(String.Compare(u.Username,username,StringComparison.CurrentCultureIgnoreCase))==0).FirstOrDefault();

                if (user != null)
                    userRoles = new[]{user.UsersRole.Name};

            //Store in cache
            HttpRuntime.Cache.Insert(cacheKey, userRoles, null, DateTime.Now.AddMinutes(_cacheTimeoutInMinutes), Cache.NoSlidingExpiration);

            // Return
            return userRoles.ToArray();
        }
예제 #2
0
 public CustomMembershipProvider()
 {
     repository = new UnitOfWork();
 }