📄 activerecordrolesprovider.cs
字号:
}
return new string[0];
}
//
// RoleProvider.GetRolesForUser
//
public override string[] GetRolesForUser(string username)
{
string tmpRoleNames = "";
//OdbcConnection conn = new OdbcConnection(connectionString);
//OdbcCommand cmd = new OdbcCommand("SELECT Rolename FROM [" + usersInRolesTable + "]" +
// " WHERE Username = ? AND ApplicationName = ?", conn);
//cmd.Parameters.Add("@Username", OdbcType.VarChar, 255).Value = username;
//cmd.Parameters.Add("@ApplicationName", OdbcType.VarChar, 255).Value = ApplicationName;
//OdbcDataReader reader = null;
try
{
SimpleQuery<aspnet_roles> q = new SimpleQuery<aspnet_roles>(
@"select a.Role from aspnet_usersinroles a
where
a.User.Application=? and a.User.UserName=?
", app,
username
);
aspnet_roles[] rs = q.Execute();
for (int i = 0; i < rs.Length ; i++)
{
tmpRoleNames += rs[i].RoleName + ",";
}
}
catch (ActiveRecordException e)
{
throw e;
}
if (tmpRoleNames.Length > 0)
{
// Remove trailing comma.
tmpRoleNames = tmpRoleNames.Substring(0, tmpRoleNames.Length - 1);
return tmpRoleNames.Split(',');
}
return new string[0];
}
//
// RoleProvider.GetUsersInRole
//
public override string[] GetUsersInRole(string rolename)
{
string tmpUserNames = "";
//OdbcConnection conn = new OdbcConnection(connectionString);
//OdbcCommand cmd = new OdbcCommand("SELECT Username FROM [" + usersInRolesTable + "]" +
// " WHERE Rolename = ? AND ApplicationName = ?", conn);
//cmd.Parameters.Add("@Rolename", OdbcType.VarChar, 255).Value = rolename;
//cmd.Parameters.Add("@ApplicationName", OdbcType.VarChar, 255).Value = ApplicationName;
//OdbcDataReader reader = null;
try
{
SimpleQuery<aspnet_Users > q = new SimpleQuery<aspnet_Users>(
@"select b from aspnet_usersinroles a,aspnet_Users b
where
b=a.User and
b.Application=? and a.Role.RoleName=?
", app,
rolename
);
aspnet_Users[] us=q.Execute();
for (int i = 0; i < us.Length ; i++)
{
tmpUserNames += us[i].UserName + ",";
}
}
catch (ActiveRecordException e)
{
throw e;
}
if (tmpUserNames.Length > 0)
{
// Remove trailing comma.
tmpUserNames = tmpUserNames.Substring(0, tmpUserNames.Length - 1);
return tmpUserNames.Split(',');
}
return new string[0];
}
//
// RoleProvider.IsUserInRole
//
public override bool IsUserInRole(string username, string rolename)
{
bool userIsInRole = false;
//OdbcConnection conn = new OdbcConnection(connectionString);
//OdbcCommand cmd = new OdbcCommand("SELECT COUNT(*) FROM [" + usersInRolesTable + "]" +
// " WHERE Username = ? AND Rolename = ? AND ApplicationName = ?", conn);
//cmd.Parameters.Add("@Username", OdbcType.VarChar, 255).Value = username;
//cmd.Parameters.Add("@Rolename", OdbcType.VarChar, 255).Value = rolename;
//cmd.Parameters.Add("@ApplicationName", OdbcType.VarChar, 255).Value = ApplicationName;
try
{
// SimpleQuery<aspnet_usersinroles> q = new SimpleQuery<aspnet_usersinroles>(
// QueryLanguage.Sql ,
// @"select a.* from aspnet_usersinroles a inner join aspnet_users b on
// a.userid=b.userid inner join aspnet_roles c on a.roleid=c.roleid
// where b.rolename=? and b.applicationid=? and a.username=?
// "
// , rolename ,app.ApplicationId , username
// );
// q.AddSqlReturnDefinition(typeof(aspnet_usersinroles), "a");
SimpleQuery<aspnet_usersinroles> q = new SimpleQuery<aspnet_usersinroles>(
@" from aspnet_usersinroles a
where a.User.UserName=?
and a.Role.RoleName=?
and a.User.Application=?
", username,rolename,app
);
int numRecs = q.Execute().Length;
if (numRecs > 0)
{
userIsInRole = true;
}
}
catch (ActiveRecordException e)
{
throw e;
}
return userIsInRole;
}
//
// RoleProvider.RemoveUsersFromRoles
//
public override void RemoveUsersFromRoles(string[] usernames, string[] rolenames)
{
foreach (string rolename in rolenames)
{
if (!RoleExists(rolename))
{
throw new ProviderException("Role name not found.");
}
}
foreach (string username in usernames)
{
foreach (string rolename in rolenames)
{
if (!IsUserInRole(username, rolename))
{
throw new ProviderException("User is not in role.");
}
}
}
try
{
using (TransactionScope t = new TransactionScope(OnDispose.Rollback))
{
foreach (string username in usernames)
{
foreach (string rolename in rolenames)
{
SimpleQuery<aspnet_usersinroles> q =
new SimpleQuery<aspnet_usersinroles>(
@"from aspnet_usersinroles a
where a.User.UserName=? and a.Role.RoleName=?
and a.User.Application=?
"
, username, rolename, app
);
aspnet_usersinroles[] rs = q.Execute();
for (int i = 0; i < rs.Length; i++)
{
ActiveRecordMediator<aspnet_usersinroles>.Delete(rs[i]);
}
}
}
t.VoteCommit();
}
}
catch (ActiveRecordException e)
{
throw e;
}
}
//
// RoleProvider.RoleExists
//
public override bool RoleExists(string rolename)
{
return ActiveRecordMediator<aspnet_roles>.Exists(new ICriterion[]{ new EqExpression("RoleName", rolename)});
}
//
// RoleProvider.FindUsersInRole
//
public override string[] FindUsersInRole(string rolename, string usernameToMatch)
{
//OdbcConnection conn = new OdbcConnection(connectionString);
//OdbcCommand cmd = new OdbcCommand("SELECT Username FROM [" + usersInRolesTable + "] " +
// "WHERE Username LIKE ? AND RoleName = ? AND ApplicationName = ?", conn);
//cmd.Parameters.Add("@UsernameSearch", OdbcType.VarChar, 255).Value = usernameToMatch;
//cmd.Parameters.Add("@RoleName", OdbcType.VarChar, 255).Value = rolename;
//cmd.Parameters.Add("@ApplicationName", OdbcType.VarChar, 255).Value = pApplicationName;
string tmpUserNames = "";
//OdbcDataReader reader = null;
if (usernameToMatch == null) usernameToMatch = "";
try
{
//conn.Open();
//reader = cmd.ExecuteReader();
SimpleQuery<aspnet_Users> q = new SimpleQuery<aspnet_Users>(
@"select b from aspnet_Users b,aspnet_usersinroles a,
aspnet_roles c
where b.UserId=a.User.UserId and a.Role.RoleId=c.RoleId and
b.Application=?
and b.UserName like ?
and c.RoleName=?
", app,usernameToMatch ,rolename
);
aspnet_Users[] us = q.Execute();
for (int i = 0; i < us.Length ; i++)
{
tmpUserNames += us[i].UserName + ",";
}
}
catch (ActiveRecordException e)
{
throw e;
}
if (tmpUserNames.Length > 0)
{
// Remove trailing comma.
tmpUserNames = tmpUserNames.Substring(0, tmpUserNames.Length - 1);
return tmpUserNames.Split(',');
}
return new string[0];
}
//
// WriteToEventLog
// A helper function that writes exception detail to the event log. Exceptions
// are written to the event log as a security measure to avoid private database
// details from being returned to the browser. If a method does not return a status
// or boolean indicating the action succeeded or failed, a generic exception is also
// thrown by the caller.
//
private void WriteToEventLog(OdbcException e, string action)
{
EventLog log = new EventLog();
log.Source = eventSource;
log.Log = eventLog;
string message = exceptionMessage + "\n\n";
message += "Action: " + action + "\n\n";
message += "Exception: " + e.ToString();
log.WriteEntry(message);
}
}
#region aspnet_roles
[ActiveRecord("aspnet_roles"),Serializable()]
public class aspnet_roles
{
private aspnet_Applications _ApplicationId;
///<summary>
///
///</summary>
[BelongsTo("ApplicationId")]
public aspnet_Applications Application
{
get { return _ApplicationId; }
set { _ApplicationId = value; }
}
private Guid _RoleId;
///<summary>
///
///</summary>
[PrimaryKey( PrimaryKeyType.GuidComb)]
public Guid RoleId
{
get { return _RoleId; }
set { _RoleId = value; }
}
private string _RoleName;
///<summary>
///
///</summary>
[Property("[RoleName]", Length=255)]
public string RoleName
{
get { return _RoleName; }
set { _RoleName = value; }
}
private string _LoweredRoleName;
///<summary>
///
///</summary>
[Property("LoweredRoleName", Length=255)]
public string LoweredRoleName
{
get { return _LoweredRoleName; }
set { _LoweredRoleName = value; }
}
private string _Description;
///<summary>
///
///</summary>
[Property("[Description]", Length=255)]
public string Description
{
get { return _Description; }
set { _Description = value; }
}
}
#endregion
#region aspnet_usersinroles
[ActiveRecord("aspnet_usersinroles"),Serializable()]
public class aspnet_usersinroles
{
private int _id;
[PrimaryKey( PrimaryKeyType.Native )]
public int Id { get { return _id; } set { _id=value ;} }
private aspnet_Membership _UserId;
///<summary>
///
///</summary>
[BelongsTo("[UserId]",UniqueKey="RU",NotNull=true )]
public aspnet_Membership User
{
get { return _UserId; }
set { _UserId = value; }
}
private aspnet_roles _RoleId;
///<summary>
///
///</summary>
[BelongsTo("[RoleId]",UniqueKey="RU",NotNull=true )]
public aspnet_roles Role
{
get { return _RoleId; }
set { _RoleId = value; }
}
}
#endregion
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -