samedi 31 juillet 2010

DNN : Comment modifier le "username" d'un utilisateur

DNN vous offre les méthodes pour modifier toutes les propriétés d'un utilisateur sauf une : le username. Pour se faire vous êtes donc condamnés à modifier directement en base cette propriété mais attention, celle-ci ne se trouve pas que dans une table.

Voici les tables et les champs devant être impactées pour que la modification de la propriété soit efficace :

  • Table "Users", champ "UserName"
  • Table "aspnet_Users", champ "UserName" ET "LoweredUserName"
Pour être un peu plus complet, voici une petite fonction mettant à jour ces différentes tables :

       Public Sub UpdateUserName(ByVal NewUserName As String, ByVal OldUserName As String)
            Dim oConnexion As SqlConnection = New SqlConnection(_connectionString)
            oConnexion.Open()
            Dim sSQL As String
            sSQL = "update users set username=@NewUserName where username=@OldUserName"
            Dim oCommand As SqlCommand = New SqlCommand(sSQL, oConnexion)
            oCommand.Parameters.AddWithValue("@NewUserName", NewUserName)
            oCommand.Parameters.AddWithValue("@OldUserName", OldUserName)
            oCommand.ExecuteNonQuery()
            sSQL = "update aspnet_Users set username=@NewUserName ,loweredusername=@NewUserName where username=@OldUserName"
            oCommand = New SqlCommand(sSQL, oConnexion)
            oCommand.Parameters.AddWithValue("@NewUserName", NewUserName)
            oCommand.Parameters.AddWithValue("@OldUserName", OldUserName)
            oCommand.ExecuteNonQuery()
            oConnexion.Close()
        End Sub

Vous remarquerez la variable "_connectionString", vous penserez bien à la valoriser et puis vérifiez que votre table "User" n'est pas préfixée (cela est possible si la propriété "objectQualifier" dans votre web.config a été valorisé à l'installation de votre DNN). Le but de cette fonction n'est pas de couvrir tous les besoins mais juste de vous donner une piste.

Aucun commentaire:

Enregistrer un commentaire