IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

Comment créer compte Admin


Sujet :

ASP.NET MVC

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 144
    Par défaut Comment créer compte Admin
    Salut,

    je me demande comment je peux créer le compte Administrateur pour la partie backoffice de mon site?
    J'ai crée mon projet et il contient plusieurs tables par défaut pour la gestion des comptes ainsi que le code "identity" :

    AspNetRoles
    Aspnetuserclaims
    Aspnetuserlogins
    Aspnetuserroles
    Aspnetusers

    Comment, une fois que mon site sera en ligne je pourrai me connecter en tant qu'Admin et faire les paramétrages dont j'ai besoin ? Pour le moment j'ai regarder dans le code Identity et je ne vois rien qui concerne le compte Admin.

    Voici le code pour s'enregistrer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
            // POST: /Account/Register
            [HttpPost]
            [AllowAnonymous]
            [ValidateAntiForgeryToken]
            public async Task<ActionResult> Register(RegisterViewModel model)
            {
                if (ModelState.IsValid)
                {
                    var user = new ApplicationUser() { UserName = model.Email, Email = model.Email };
                    IdentityResult result = await UserManager.CreateAsync(user, model.Password);
                    if (result.Succeeded)
                    {
                        Client client = new Client();
                        client.Nom = model.Nom;
                        client.Prenom = model.Prenom;
                        client.Adresse = model.Adresse;
                        client.Ville = model.Ville;
                        client.Codepostal = model.Codepostal;
                        await SignInAsync(user, isPersistent: false);
                        client.Userid = user.Id;
                        using (var db = new ApplicationDbContext())
                        {
                            db.TClients.Add(client);
                            db.SaveChanges();
                        }
                            // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                        // Send an email with this link
                        // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                        // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                        // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");
     
                        return RedirectToAction("Index", "Home");
                    }
                    else
                    {
                        AddErrors(result);
                    }
                }
    je vous avoue que c'est un peu flou pour moi.
    Par exemple je ne sais pas dans quelle partie de mon code je dois mettre la création du role Admin et quand assigner le role admin a l'utilisateur qui sera l'administrateur.

    J'ai pensé a me baser sur une adresse email et tester quand un enregistrement se fait sur cet adresse email alors créer et lui assigner le role admin mais il faut pour cela avoir un test en dur sur une adresse email dans le code.

    Merci pour vos idées, et votre aide.

    A +

  2. #2
    Membre chevronné Avatar de Julien698
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2013
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2013
    Messages : 237
    Par défaut
    Salut,

    tu n'as pas besoin de mettre de code en dur, dans ta base de données tu fais une table users, avec une colonne "rôle" et lors d'une connexion quand quand tu vas chercher dans la base, tu regardes en plus des identifiants la valeur du rôle. Après pour tout le site pour conserver la valeur du rôle tu stockes la mets dans une variable de session et sur les pages de ton backoffice, tu fais une verification à chaque fois.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 26
    Par défaut
    Bonjour,

    Une des choses les plus couramment faite si tu utilise CodeFirst, est de créer via le seed des migrations les roles et au moins un utilisateur avec les droits administrateurs.

    Dans le fichier configuration.cs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
                var idManager = new IdentityManager((IdentityDbContext<ApplicationUser>)context);
     
                if (!idManager.RoleExists("Admin"))
                {
                    success = idManager.CreateRole("Admin");
                    if (!success) throw new Exception("CreateRole Admin");
                }
     
                var user = context.Users.FirstOrDefault(u => u.UserName == "Administrateur");
     
                if (user == null)
                {
                    user = new ApplicationUser()
                    {
                        UserName = "Administrateur",
                        FirstName = "FirstName",
                        LastName = "LastName",
                        Email = "email@email.com"
                    };
     
     
                    // Be careful here - you  will need to use a password which will 
                    // be valid under the password rules for the application, 
                    // or the process will abort:
                    success = idManager.CreateUser(user, "P@ssword");//Default Password
                    if (!success) throw new Exception("CreateUser");
                }
     
     
                if (!context.Roles.First(r => r.Name == "Admin").Users.Any(u => u.UserId == user.Id))
                {
                    success = idManager.AddUserToRole(user.Id, "Admin");
                    if (!success) throw new Exception("AddUserToRole");
                }
    Une fois le seed fait, l'utilisateur Administrateur existe et il a le role Admin, il suffi de se connecter avec le mot de passe par défaut, le changer à la première connexion et comme ça on a un utilisateur administrateur dans le bon role qui pourra attribuer plus tard les roles aux autres users.

    Attention, la classe IdentityManager appel en interne SaveChange, il faut donc la prévoir en fin de seed (ou au début suivant ce qu'on a a faire).

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/02/2011, 15h46
  2. Comment créer un 2ème compte Administrateur
    Par Deron7 dans le forum Windows Serveur
    Réponses: 7
    Dernier message: 16/10/2007, 13h15
  3. Comment créer un compte email no-reply
    Par gforce dans le forum OVH
    Réponses: 3
    Dernier message: 24/09/2007, 13h41
  4. comment créer un compte outlook ?
    Par bertrand_declerck dans le forum Outlook
    Réponses: 2
    Dernier message: 12/02/2007, 00h44
  5. Comment créer un compte utilisateur distant sur WinXpPro
    Par Geolem dans le forum Windows XP
    Réponses: 2
    Dernier message: 09/10/2006, 12h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo