Pour implémenter une classe qui hérite de RoleProvider, vous devez substituer les méthodes suivantes :
Public MustInherit Class RoleProvider
Inherits ProviderBase
Public MustOverride Property ApplicationName() As String
Public MustOverride Sub AddUsersToRoles(ByVal usernames As String(), _
ByVal roleNames As String())
Public MustOverride Sub CreateRole(ByVal roleName As String)
Public MustOverride Function DeleteRole(ByVal roleName As String, _
ByVal throwOnPopulatedRole As Boolean) As Boolean
Public MustOverride Function FindUsersInRole(ByVal roleName As String, _
ByVal usernameToMatch As String) As String()
Public MustOverride Function GetAllRoles() As String()
Public MustOverride Function GetRolesForUser(ByVal username As String) As String()
Public MustOverride Function GetUsersInRole(ByVal roleName As String) As String()
Public MustOverride Function IsUserInRole(ByVal username As String, _
ByVal roleName As String) As Boolean
Public MustOverride Sub RemoveUsersFromRoles(ByVal usernames As String(), _
ByVal roleNames As String())
Public MustOverride Function RoleExists(ByVal roleName As String) As Boolean
End Class
Grâce aux méthodes que nous avons maintenant à disposition, il va être simple de compléter les fonctions de notre fournisseur.
La méthode de création d'un rôle pourra donc ressembler à celle-ci (on remarquera l'appel à la méthode GetApplicationId qui récupérera la valeur du champ ApplicationId à insérer) :
Public Overrides Sub CreateRole(ByVal rolename As String)
Dim r As New Role
r.RoleName = rolename
r.LoweredRoleName = r.RoleName.ToLower
r.ApplicationId = Queries.GetApplicationId(dc, ApplicationName)
dc.Roles.InsertOnSubmit(r)
dc.SubmitChanges()
End Sub
Public Overrides Function GetAllRoles() As String()
Return Queries.GetRoles(dc, ApplicationName).ToArray()
End Function