I am trying out "SimpleMembership" in MVC3 via Nuget and have downloaded the sample to play with. The issue is that I cannot figure out how I would assign a role to a particular user.
In the standard MVC membership you can just use something like:
Roles.AddUserToRole(model.UserName, "StandardUser");
However, SimpleMembership only seems to have one method for roles exposed (unless Im being stupid!) which is
public void RequireRoles(params string[] roles)
{
WebSecurity.RequireRoles(roles);
}
There must be an easy way as the following table was created as part of this nuget package:
-TABLE: webpages_Roles
RoleId , RoleName
This is slightly confusing though as in App_Start/SimpleMembershipMvc3.cs
there is the following:
Roles.Enabled = true;
RoleProvider provider3 = Roles.Providers["AspNetSqlRoleProvider"];
if (provider3 != null)
{
RoleProvider provider6 = provider3;
SimpleRoleProvider provider4 = CreateDefaultSimpleRoleProvider("AspNetSqlRoleProvider", provider6);
Roles.Providers.Remove("AspNetSqlRoleProvider");
Roles.Providers.Add(provider4);
}
SimpleRoleProvider function
private static SimpleRoleProvider CreateDefaultSimpleRoleProvider(string name, RoleProvider currentDefault)
{
RoleProvider previousProvider = currentDefault;
SimpleRoleProvider provider = new SimpleRoleProvider(previousProvider);
NameValueCollection config = new NameValueCollection();
provider.Initialize(name, config);
return provider;
}
Does this package use the built in Role provider? If so, how does it hook up with the tables created by SimpleMembership
You need to use the Roles API to interact with the Roles. Something like the following should work:
if (!Roles.RoleExists("Administrator"))
Roles.CreateRole("Administrator");
if (!Roles.GetRolesForUser(model.UserName).Contains("Administrator"))
Roles.AddUsersToRole(new[] { model.UserName }, "Administrator");