private static User EnsureAdmin(DbContextBase db, ICryptoService crypto) { User adminUser = db.User.SingleOrDefault(o => o.Username == AdminEmail); if (adminUser == null) { adminUser = new User() { CultureName = "en", DisplayName = "Webmaster", Enabled = true, TimeZoneId = Globalization.DefaultTimeZoneId, Username = AdminEmail, Verified = true }; db.User.Add(adminUser); db.SaveChanges(); } Role adminRole = db.Role.FirstOrDefault(o => o.RoleId == RoleTypes.Admin); if (adminRole == null) { adminRole = new Role() { CreatedByUser = adminUser, Enabled = true, Name = "Administrator", RoleId = RoleTypes.Admin }; db.Role.Add(adminRole); db.SaveChanges(); } if (!db.UserRole.Any()) { var userRole = new UserRole() { Role = adminRole, User = adminUser }; string salt = crypto.CreateSalt(); string hash = crypto.CreateKey(salt, "P@ssw0rd"); var userProvider = new UserProviderLocal { ProviderId = ProviderTypes.Local, PasswordSalt = salt, PasswordHash = hash, User = adminUser, }; db.UserRole.Add(userRole); db.UserProvider.Add(userProvider); db.SaveChanges(); } return(adminUser); }