| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278 |
- //
- // System.Web.Security.Roles
- //
- // Authors:
- // Ben Maurer ([email protected])
- // Sebastien Pouliot <[email protected]>
- // Chris Toshok <[email protected]>
- //
- // (C) 2003 Ben Maurer
- // Copyright (c) 2005,2006 Novell, Inc (http://www.novell.com)
- //
- // Permission is hereby granted, free of charge, to any person obtaining
- // a copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to
- // permit persons to whom the Software is furnished to do so, subject to
- // the following conditions:
- //
- // The above copyright notice and this permission notice shall be
- // included in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- //
- #if NET_2_0
- using System.Configuration.Provider;
- using System.Web.Configuration;
- namespace System.Web.Security {
- public static class Roles {
- #if TARGET_J2EE
- const string Roles_cookie_protection = "Roles.cookie_protection";
- private static CookieProtection cookie_protection {
- get {
- object o = AppDomain.CurrentDomain.GetData (Roles_cookie_protection);
- if (o == null) {
- lock (AppDomain.CurrentDomain) {
- o = AppDomain.CurrentDomain.GetData (Roles_cookie_protection);
- if (o == null) {
- cookie_protection = CookieProtection.All;
- return cookie_protection;
- }
- }
- }
- return (CookieProtection) o;
- }
- set {
- AppDomain.CurrentDomain.SetData (Roles_cookie_protection, value);
- }
- }
- private static RoleManagerSection config {
- get {
- return (RoleManagerSection) WebConfigurationManager.GetSection ("system.web/roleManager");
- }
- }
- const string Roles_providersCollection = "Roles.providersCollection";
- static RoleProviderCollection providersCollection {
- get {
- return (RoleProviderCollection)AppDomain.CurrentDomain.GetData (Roles_providersCollection);
- }
- set {
- AppDomain.CurrentDomain.SetData (Roles_providersCollection, value);
- }
- }
- #else
- private static CookieProtection cookie_protection;
- private static RoleManagerSection config;
- static RoleProviderCollection providersCollection;
- static Roles ()
- {
- // default values (when not supplied in web.config)
- cookie_protection = CookieProtection.All;
- config = (RoleManagerSection)WebConfigurationManager.GetSection ("system.web/roleManager");
- }
- #endif
- public static void AddUsersToRole (string [] usernames, string rolename)
- {
- Provider.AddUsersToRoles (usernames, new string[] {rolename});
- }
-
- public static void AddUsersToRoles (string [] usernames, string [] rolenames)
- {
- Provider.AddUsersToRoles (usernames, rolenames);
- }
-
- public static void AddUserToRole (string username, string rolename)
- {
- Provider.AddUsersToRoles (new string[] {username}, new string[] {rolename});
- }
-
- public static void AddUserToRoles (string username, string [] rolenames)
- {
- Provider.AddUsersToRoles (new string[] {username}, rolenames);
- }
-
- public static void CreateRole (string rolename)
- {
- Provider.CreateRole (rolename);
- }
-
- [MonoTODO ("Not implemented")]
- public static void DeleteCookie ()
- {
- throw new NotImplementedException ();
- }
-
- public static bool DeleteRole (string rolename)
- {
- return Provider.DeleteRole (rolename, true);
- }
-
- public static bool DeleteRole (string rolename, bool throwOnPopulatedRole)
- {
- return Provider.DeleteRole (rolename, throwOnPopulatedRole);
- }
-
- public static string [] GetAllRoles ()
- {
- return Provider.GetAllRoles ();
- }
-
- public static string [] GetRolesForUser ()
- {
- return Provider.GetRolesForUser (CurrentUser);
- }
-
- static string CurrentUser {
- get {
- if (HttpContext.Current != null && HttpContext.Current.User != null)
- return HttpContext.Current.User.Identity.Name;
- else
- return System.Threading.Thread.CurrentPrincipal.Identity.Name;
- }
- }
-
- public static string [] GetRolesForUser (string username)
- {
- return Provider.GetRolesForUser (username);
- }
-
- public static string [] GetUsersInRole (string rolename)
- {
- return Provider.GetUsersInRole (rolename);
- }
-
- public static bool IsUserInRole (string rolename)
- {
- return Provider.IsUserInRole (CurrentUser, rolename);
- }
-
- public static bool IsUserInRole (string username, string rolename)
- {
- return Provider.IsUserInRole (username, rolename);
- }
-
- public static void RemoveUserFromRole (string username, string rolename)
- {
- Provider.RemoveUsersFromRoles (new string[] {username}, new string[] {rolename});
- }
-
- public static void RemoveUserFromRoles (string username, string [] rolenames)
- {
- Provider.RemoveUsersFromRoles (new string[] {username}, rolenames);
- }
-
- public static void RemoveUsersFromRole (string [] usernames, string rolename)
- {
- Provider.RemoveUsersFromRoles (usernames, new string[] {rolename});
- }
-
- public static void RemoveUsersFromRoles (string [] usernames, string [] rolenames)
- {
- Provider.RemoveUsersFromRoles (usernames, rolenames);
- }
-
- public static bool RoleExists (string rolename)
- {
- return Provider.RoleExists (rolename);
- }
-
- public static string[] FindUsersInRole (string rolename, string usernameToMatch)
- {
- return Provider.FindUsersInRole (rolename, usernameToMatch);
- }
-
- public static string ApplicationName {
- get { return Provider.ApplicationName; }
- set { Provider.ApplicationName = value; }
- }
-
- public static bool CacheRolesInCookie {
- get { return config.CacheRolesInCookie; }
- }
-
- public static string CookieName {
- get { return config.CookieName; }
- }
-
- public static string CookiePath {
- get { return config.CookiePath; }
- }
-
- [MonoTODO ("read infos from web.config")]
- public static CookieProtection CookieProtectionValue {
- get { return cookie_protection; }
- }
-
- public static bool CookieRequireSSL {
- get { return config.CookieRequireSSL; }
- }
-
- public static bool CookieSlidingExpiration {
- get { return config.CookieSlidingExpiration; }
- }
-
- public static int CookieTimeout {
- get { return (int)config.CookieTimeout.TotalMinutes; }
- }
- public static bool CreatePersistentCookie {
- get { return config.CreatePersistentCookie; }
- }
- public static string Domain {
- get { return config.Domain; }
- }
- public static bool Enabled {
- get { return config.Enabled; }
- }
- public static int MaxCachedResults {
- get { return config.MaxCachedResults; }
- }
-
- public static RoleProvider Provider {
- get { return Providers[config.DefaultProvider]; }
- }
-
- public static RoleProviderCollection Providers {
- get {
- CheckEnabled ();
- if (providersCollection == null) {
- providersCollection = new RoleProviderCollection ();
- ProvidersHelper.InstantiateProviders (config.Providers, providersCollection, typeof (RoleProvider));
- }
- return providersCollection;
- }
- }
- // private stuff
- private static void CheckEnabled ()
- {
- if (!Enabled)
- throw new ProviderException ("This feature is not enabled. To enable it, add <roleManager enabled=\"true\"> to your configuration file.");
- }
- }
- }
- #endif
|