Example #1
0
        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);
        }