⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 activerecordrolesprovider.cs

📁 如果不使用IIS,请先运行 XSP.exe,待提示已侦听 8080端口后
💻 CS
📖 第 1 页 / 共 2 页
字号:
      }

      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 + -