I am trying to set up my own CustomRoleProvider to allow users to login to an "Admin Dashboard' for my portal.
My web config file has been updated
<roleManager enabled="true" defaultProvider="CustomRoleProvider">
<providers>
<clear />
<add name="CustomRoleProvider" type="Namespace.Models.CustomRoleProvider" connectionStringName="DBName" />
</providers>
</roleManager>
And my CustomRoleProvider set up with GetRolesForUser and IsUserInRole
public override string[] GetRolesForUser(string username)
{
using (var userContext = new MyEntities())
{
var user = userContext.AdminTables.SingleOrDefault(u => u.UserName == username);
var userRoles = userContext.AdminTables.Select(r => r.UserRole);
if (user == null)
return new string[] { };
return user.UserName == null ? new string[] { } :
userRoles.ToArray();
}
}
public override bool IsUserInRole(string username, string roleName)
{
using (var userContext = new MyEntities())
{
var user = userContext.AdminTables.SingleOrDefault(u => u.UserName == username);
var userRoles = userContext.AdminTables.Select(r => r.UserRole);
if (user == null)
return false;
return user.UserRole != null &&
userRoles.Any(r => r == roleName);
}
}
I think the issue is I only have one AdminTable with Username (and Password). If the username is in the AdminTable then they are an Admin.
This is the first time I am trying to Implement CustomerRolePRovider so not sure if I need both GetRolesforUser and IsUserInRole, if there is just one role. Still, I cannot figure out why if the user is listed in the AdminTable I am getting the error above. Help me, please.
The fields in my AdminTable are basically UserName, and UserRole (which is always Admin (for now)).