c# - Checking if a user is in a role in asp.net mvc Identity -


i'm having issue seeding database users , roles.

the user , role both created (i can see them in database after error thrown).

however, when try check if user in role, exception.

my code is:

    public class tbinitializer<t> : dropcreatedatabasealways<tbcontext>     {     protected override void seed(tbcontext context)     {         applicationdbcontext userscontext = new applicationdbcontext();         var userstore = new userstore<applicationuser>(userscontext);         var usermanager = new usermanager<applicationuser>(userstore);          var rolestore = new rolestore<identityrole>(userscontext);         var rolemanager = new rolemanager<identityrole>(rolestore);           if(!userscontext.users.any(x=> x.username=="marktest"))         {             var user = new applicationuser { username = "marktest", email = "marktest@gmail.com" };             usermanager.create(user, "pa$$w0rd!");         }          if (!rolemanager.roleexists("admin"))         {              rolemanager.create(new identityrole("admin"));         }          if(!usermanager.isinrole("marktest","admin"))         {              usermanager.addtorole("marktest","admin");         } 

however, on line:

if(!usermanager.isinrole("marktest","admin"))

an exception thrown error: userid not found.

the user , role both in database when check after exception thrown:

shows user added db

shows role added db

can see i'm doing wrong?

thanks help,

mark

i found out solution, in case else having problem.

the "isinrole" expecting user.id - not username string - changed to:

            if (!usermanager.isinrole(user.id, "admin"))             {                 usermanager.addtorole(user.id, "admin");             } 

so working code becomes:

    applicationdbcontext userscontext = new applicationdbcontext();     var userstore = new userstore<applicationuser>(userscontext);     var usermanager = new usermanager<applicationuser>(userstore);      var rolestore = new rolestore<identityrole>(userscontext);     var rolemanager = new rolemanager<identityrole>(rolestore);      // create role     if (!rolemanager.roleexists("admin"))     {          rolemanager.create(new identityrole("admin"));     }      if(!userscontext.users.any(x=> x.username=="marktest"))     {         // create user         var user = new applicationuser { username = "marktest", email = "marktest@gmail.com" };         usermanager.create(user, "pa$$w0rd!");          // add user role         if (!usermanager.isinrole(user.id, "admin"))             {                 usermanager.addtorole(user.id, "admin");             }       } 

i hope helps,

mark


Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

python - NameError: name 'subprocess' is not defined -