using System.Linq; using ShwasherSys.Authorization.Roles; using ShwasherSys.Authorization.Users; using ShwasherSys.EntityFramework; using IwbZero.Authorization.Permissions; using IwbZero.Authorization.Roles; using IwbZero.Authorization.Users; using Microsoft.AspNet.Identity; namespace ShwasherSys.Migrations.SeedData { public class DefaultRoleAndUserCreator { private readonly ShwasherDbContext _context; public DefaultRoleAndUserCreator(ShwasherDbContext context) { _context = context; } public void Create() { CreateAdminRoleAndUsers(); CreateSystemRoleAndUsers(); } #region Admin private void CreateAdminRoleAndUsers() { //Admin role for host var adminRole = _context.Roles.FirstOrDefault(r => r.Name == RoleBase.AdminRoleName); if (adminRole == null) { adminRole = _context.Roles.Add(new SysRole { Name = RoleBase.AdminRoleName, RoleDisplayName = RoleBase.AdminRoleDisplayName, IsStatic = true, RoleType = 1 }); _context.SaveChanges(); AddRolePermission(adminRole.Id); } else { AddRolePermission(adminRole.Id); } //Admin user var adminUser = _context.Users.FirstOrDefault(u => u.UserName == UserBase.AdminUserName); if (adminUser == null) { adminUser = _context.Users.Add( new SysUser { UserName = UserBase.AdminUserName, RealName = "Administrator", //AccountType = 1, UserType = 1, //Surname = "Administrator", EmailAddress = "admin@iwbnet.com", IsEmailConfirmed = true, Password = new PasswordHasher().HashPassword(SysUser.DefaultPassword) }); _context.SaveChanges(); AddUserPermission(adminUser.Id); _context.UserRoles.Add(new SysUserRole(adminUser.Id, adminRole.Id)); _context.SaveChanges(); } else { AddUserPermission(adminUser.Id); _context.SaveChanges(); } } private void CreateSystemRoleAndUsers() { //System role for host var systemRole = _context.Roles.FirstOrDefault(r => r.Name == "System"); if (systemRole == null) { systemRole = _context.Roles.Add(new SysRole { Name = "System", RoleDisplayName = "System", IsStatic = true, RoleType = 2 }); _context.SaveChanges(); AddRolePermission(systemRole.Id); } else { AddRolePermission(systemRole.Id); } //System user var systemUser = _context.Users.FirstOrDefault(u => u.UserName == "System"); if (systemUser == null) { systemUser = _context.Users.Add( new SysUser { UserName = "System", RealName = "SystemManager", //Surname = "Administrator", //AccountType = 1, UserType = 2, EmailAddress = "System@iwbnet.com", IsEmailConfirmed = true, Password = new PasswordHasher().HashPassword("system") }); _context.SaveChanges(); _context.UserRoles.Add(new SysUserRole(systemUser.Id, systemRole.Id)); _context.SaveChanges(); } } /// /// 添加用户权限 /// /// private void AddUserPermission(long userId) { var funs = _context.Functions.Where(a => a.IsDeleted == false).OrderBy(a => a.CreationTime); foreach (var fun in funs) { //if (_context.Permissions.FirstOrDefault(a => a.Master == 1 && a.MasterValue == userId + "") == null) //{ //} _context.Permissions.Add( new SysPermission { PermissionName = fun.PermissionName, IsGranted = true, Master = 1, MasterValue = userId + "" }); } _context.SaveChanges(); } /// /// 添加角色权限 /// /// private void AddRolePermission(int roleId) { var funs = _context.Functions.Where(a => a.IsDeleted == false).OrderBy(a => a.CreationTime); foreach (var fun in funs) { //if (_context.Permissions.FirstOrDefault(a => a.Master == 2 && a.MasterValue == roleId + "") == null) //{ //} _context.Permissions.Add( new SysPermission { PermissionName = fun.PermissionName, IsGranted = true, Master = 2, MasterValue = roleId + "" }); } _context.SaveChanges(); } #endregion } }