public static void SetupDemoIdentityData(TicketDeskIdentityContext context) { var userStore = new UserStore <TicketDeskUser>(context); var roleStore = new RoleStore <IdentityRole>(context); //TODO: this user manager has a default config, need to leverage the same user manager as the rest of the application var userManager = new UserManager <TicketDeskUser>(userStore); var roleManager = new RoleManager <IdentityRole>(roleStore); var roleNames = context.DefaultRoleNames; foreach (var roleName in roleNames) { //Create Role if it does not exist var role = roleManager.FindByName(roleName); if (role == null) { role = new IdentityRole(roleName); roleManager.Create(role); } } var admin = new TicketDeskUser { Id = "64165817-9cb5-472f-8bfb-6a35ca54be6a", UserName = "******", Email = "*****@*****.**", DisplayName = "Admin User" }; var staff = new TicketDeskUser { Id = "72bdddfb-805a-4883-94b9-aa494f5f52dc", UserName = "******", Email = "*****@*****.**", DisplayName = "HelpDesk User" }; var reguser = new TicketDeskUser { Id = "17f78f38-fa68-445f-90de-38896140db28", UserName = "******", Email = "*****@*****.**", DisplayName = "Regular User" }; var users = new[] { admin, staff, reguser }; var rolesNames = new Dictionary <string, string[]> { { "*****@*****.**", new[] { "TdAdministrators", "TdHelpDeskUsers", "TdInternalUsers" } }, { "*****@*****.**", new[] { "TdHelpDeskUsers", "TdInternalUsers" } }, { "*****@*****.**", new[] { "TdInternalUsers" } } }; foreach (var tdUser in users) { var user = userManager.FindByName(tdUser.UserName); if (user == null) { user = tdUser; userManager.Create(user, "123456"); userManager.SetLockoutEnabled(user.Id, false); } var rnames = rolesNames[user.UserName]; var rolesForUser = userManager.GetRoles(user.Id); foreach (var rname in rnames.Where(rname => !rolesForUser.Contains(rname))) { userManager.AddToRole(user.Id, rname); } } }
/// <summary> /// Migrates the users and roles from a legacy database to the new TD 2.5 schema. /// </summary> /// <param name="context">The identity database context</param> /// <param name="userManager">The user manager.</param> /// <param name="roleManager">The role manager.</param> /// <returns><c>true</c> if users migrated, <c>false</c> otherwise.</returns> public static bool MigrateSecurity(TicketDeskIdentityContext context, TicketDeskUserManager userManager, TicketDeskRoleManager roleManager) { EnsureRolesExist(roleManager); var appId = context.Database.SqlQuery <Guid>( "select ApplicationId from aspnet_Applications where ApplicationName = 'TicketDesk'").First().ToString(); var users = context.Database.SqlQuery <LegacyUser>( "select UserId, Email, Password, PasswordFormat, Comment from aspnet_Membership where ApplicationId = '" + appId + "' and IsApproved = 1 and IsLockedOut = 0").ToList(); const string roleQuery = "SELECT r.RoleName FROM aspnet_UsersInRoles u inner join aspnet_Roles r on u.RoleId = r.RoleId WHERE u.UserId = @userId and r.ApplicationId = @appId"; foreach (var user in users) { var newUser = new TicketDeskUser { UserName = user.Email, Email = user.Email, DisplayName = user.Comment, }; var result = user.PasswordFormat == 0 ? userManager.Create(newUser, user.Password) : userManager.Create(newUser); if (result.Succeeded) { var rolesForUser = context.Database.SqlQuery <string>(roleQuery, new SqlParameter("userId", user.UserId), new SqlParameter("appId", appId)); var newRoles = new List <string>(); foreach (var role in rolesForUser) { switch (role.ToLowerInvariant()) { case "administrators": newRoles.Add("TdAdministrators"); break; case "helpdesk": newRoles.Add("TdHelpDeskUsers"); break; case "ticketsubmitters": newRoles.Add("TdInternalUsers"); break; default: newRoles.Add("TdPendingUsers"); break; } } userManager.AddToRoles(newUser.Id, newRoles.ToArray()); } } return(true); }
public static void RemoveAllIdentity(TicketDeskIdentityContext context) { foreach (var user in context.Users) { context.Users.Remove(user); } foreach (var role in context.Roles) { context.Roles.Remove(role); } //the context itself will ensure that at least one valid admin user accout remains context.SaveChanges(); }
public DataManagementController(TicketDeskIdentityContext identityContext) { IdentityContext = identityContext; }
private static void SetupUsersAsync(TicketDeskIdentityContext context) { var roles = new[] { new Role("TdAdmin"), new Role("TdStaff"), new Role("TdSubmitter") }; var users = new[] { new TdUser() { HomeTown = "AnyTown USA", UserName = "******" }, new TdUser() { HomeTown = "AnyTown USA", UserName = "******" }, new TdUser() { HomeTown = "AnyTown USA", UserName = "******" } }; var userRoles = new List <Tuple <string, string> > { Tuple.Create("admin", "TdAdmin"), Tuple.Create("admin", "TdStaff"), Tuple.Create("admin", "TdSubmitter"), Tuple.Create("staff", "TdStaff"), Tuple.Create("staff", "TdSubmitter"), Tuple.Create("user", "TdSubmitter") }; var idMgr = new Microsoft.AspNet.Identity.IdentityManager(new IdentityStore(context)); foreach (var role in roles) { if (!context.Roles.Any(r => r.Name == role.Name)) { var task = idMgr.Roles.CreateRoleAsync(role); task.Wait(); } } foreach (var tdUser in users) { if (!context.Users.Any(u => u.UserName == tdUser.UserName)) { idMgr.Users.CreateLocalUser(tdUser, "password"); } } foreach (var userRole in userRoles) { var rlTask = idMgr.Roles.FindRoleByNameAsync(userRole.Item2); rlTask.Wait(); var rl = rlTask.Result; var usrTask = idMgr.Store.Users.FindByNameAsync(userRole.Item1, CancellationToken.None); usrTask.Wait(); var usr = usrTask.Result; var inRoleTask = idMgr.Roles.IsUserInRoleAsync(usr.Id, rl.Id, CancellationToken.None); inRoleTask.Wait(); var inRole = inRoleTask.Result; if (!inRole) { var rrTask = idMgr.Roles.AddUserToRoleAsync(usr.Id, rl.Id); rrTask.Wait(); } } }
public static void RemoveLegacyMembershipObjects(TicketDeskIdentityContext context) { const string script = @" drop table aspnet_PersonalizationAllUsers drop table aspnet_PersonalizationPerUser drop table aspnet_Profile drop table aspnet_SchemaVersions drop table aspnet_UsersInRoles drop table aspnet_WebEvent_Events drop table aspnet_Paths drop table aspnet_Membership drop table aspnet_Roles drop table aspnet_Users drop table aspnet_Applications drop view vw_aspnet_Applications drop view vw_aspnet_MembershipUsers drop view vw_aspnet_Profiles drop view vw_aspnet_Roles drop view vw_aspnet_Users drop view vw_aspnet_UsersInRoles drop view vw_aspnet_WebPartState_Paths drop view vw_aspnet_WebPartState_Shared drop view vw_aspnet_WebPartState_User drop procedure aspnet_AnyDataInTables drop procedure aspnet_Applications_CreateApplication drop procedure aspnet_CheckSchemaVersion drop procedure aspnet_Membership_ChangePasswordQuestionAndAnswer drop procedure aspnet_Membership_CreateUser drop procedure aspnet_Membership_FindUsersByEmail drop procedure aspnet_Membership_FindUsersByName drop procedure aspnet_Membership_GetAllUsers drop procedure aspnet_Membership_GetNumberOfUsersOnline drop procedure aspnet_Membership_GetPassword drop procedure aspnet_Membership_GetPasswordWithFormat drop procedure aspnet_Membership_GetUserByEmail drop procedure aspnet_Membership_GetUserByName drop procedure aspnet_Membership_GetUserByUserId drop procedure aspnet_Membership_ResetPassword drop procedure aspnet_Membership_SetPassword drop procedure aspnet_Membership_UnlockUser drop procedure aspnet_Membership_UpdateUser drop procedure aspnet_Membership_UpdateUserInfo drop procedure aspnet_Paths_CreatePath drop procedure aspnet_Personalization_GetApplicationId drop procedure aspnet_PersonalizationAdministration_DeleteAllState drop procedure aspnet_PersonalizationAdministration_FindState drop procedure aspnet_PersonalizationAdministration_GetCountOfState drop procedure aspnet_PersonalizationAdministration_ResetSharedState drop procedure aspnet_PersonalizationAdministration_ResetUserState drop procedure aspnet_PersonalizationAllUsers_GetPageSettings drop procedure aspnet_PersonalizationAllUsers_ResetPageSettings drop procedure aspnet_PersonalizationAllUsers_SetPageSettings drop procedure aspnet_PersonalizationPerUser_GetPageSettings drop procedure aspnet_PersonalizationPerUser_ResetPageSettings drop procedure aspnet_PersonalizationPerUser_SetPageSettings drop procedure aspnet_Profile_DeleteInactiveProfiles drop procedure aspnet_Profile_DeleteProfiles drop procedure aspnet_Profile_GetNumberOfInactiveProfiles drop procedure aspnet_Profile_GetProfiles drop procedure aspnet_Profile_GetProperties drop procedure aspnet_Profile_SetProperties drop procedure aspnet_RegisterSchemaVersion drop procedure aspnet_Roles_CreateRole drop procedure aspnet_Roles_DeleteRole drop procedure aspnet_Roles_GetAllRoles drop procedure aspnet_Roles_RoleExists drop procedure aspnet_Setup_RemoveAllRoleMembers drop procedure aspnet_Setup_RestorePermissions drop procedure aspnet_UnRegisterSchemaVersion drop procedure aspnet_Users_CreateUser drop procedure aspnet_Users_DeleteUser drop procedure aspnet_UsersInRoles_AddUsersToRoles drop procedure aspnet_UsersInRoles_FindUsersInRole drop procedure aspnet_UsersInRoles_GetRolesForUser drop procedure aspnet_UsersInRoles_GetUsersInRoles drop procedure aspnet_UsersInRoles_IsUserInRole drop procedure aspnet_UsersInRoles_RemoveUsersFromRoles drop procedure aspnet_WebEvent_LogEvent drop schema aspnet_Membership_FullAccess drop schema aspnet_Membership_BasicAccess drop schema aspnet_Membership_ReportingAccess drop schema aspnet_Personalization_BasicAccess drop schema aspnet_Personalization_FullAccess drop schema aspnet_Personalization_ReportingAccess drop schema aspnet_Profile_BasicAccess drop schema aspnet_Profile_FullAccess drop schema aspnet_Profile_ReportingAccess drop schema aspnet_Roles_BasicAccess drop schema aspnet_Roles_FullAccess drop schema aspnet_Roles_ReportingAccess drop schema aspnet_WebEvent_FullAccess drop role aspnet_Membership_FullAccess drop role aspnet_Membership_BasicAccess drop role aspnet_Membership_ReportingAccess drop role aspnet_Personalization_FullAccess drop role aspnet_Personalization_BasicAccess drop role aspnet_Personalization_ReportingAccess drop role aspnet_Profile_FullAccess drop role aspnet_Profile_BasicAccess drop role aspnet_Profile_ReportingAccess drop role aspnet_Roles_FullAccess drop role aspnet_Roles_BasicAccess drop role aspnet_Roles_ReportingAccess drop role aspnet_WebEvent_FullAccess "; context.Database.ExecuteSqlCommand(TransactionalBehavior.EnsureTransaction, script); }