Beispiel #1
0
        public void ConfigureDb(IEphItUser user, EphItContext _context)
        {
            if (_context.Database.GetPendingMigrations().Any())
            {
                _context.Database.Migrate();
                var internalUser = _context.User.Where(p => p.AuthenticationId.Equals((short)AuthenticationEnum.EphItInternal)).First();
                var admin        = _context.Role.Where(p => p.Name.Equals("Administrators")).FirstOrDefault();
                if (admin == null)
                {
                    admin = new Role();
                    admin.CreatedByUserId  = internalUser.UserId;
                    admin.Created          = DateTime.UtcNow;
                    admin.Description      = "Full administrator of all objects";
                    admin.Name             = "Administrators";
                    admin.IsGlobal         = true;
                    admin.Modified         = DateTime.UtcNow;
                    admin.ModifiedByUserId = internalUser.UserId;
                    _context.Add(admin);
                    _context.SaveChanges();
                }
                foreach (RBACActionEnum a in (RBACActionEnum[])Enum.GetValues(typeof(RBACActionEnum)))
                {
                    foreach (RBACObjectEnum b in (RBACObjectEnum[])Enum.GetValues(typeof(RBACObjectEnum)))
                    {
                        if (!_context.RoleObjectAction.Where(p =>
                                                             p.RoleId.Equals(admin.RoleId) &&
                                                             p.RbacObjectId.Equals((short)b) &&
                                                             p.RbacActionId.Equals((short)a)
                                                             )
                            .Any()
                            )
                        {
                            var tempObject = new RoleObjectAction();
                            tempObject.RoleId       = admin.RoleId;
                            tempObject.RbacObjectId = (short)b;
                            tempObject.RbacActionId = (short)a;
                            _context.Add(tempObject);
                        }
                    }
                }
                _context.SaveChanges();
            }
            // Add current user to full admin role
            var vUser = user.RegisterCurrent();

            if (!_context.RoleMembershipUser.Where(p => p.UserId == vUser.UserId && p.Role.Name.Equals("Administrators")).Any())
            {
                var admin             = _context.Role.Where(p => p.Name.Equals("Administrators")).FirstOrDefault();
                var newRoleMembership = new RoleMembershipUser();
                newRoleMembership.RoleId = admin.RoleId;
                newRoleMembership.UserId = vUser.UserId;
                _context.Add(newRoleMembership);
            }
            _context.SaveChanges();
            IConfigurationSection configSection = Configuration.GetSection("AdminUsers");

            if (configSection != null)
            {
                foreach (var section in configSection.GetChildren())
                {
                    var    paramDictionary = new Dictionary <string, string>();
                    string authType        = "";
                    switch (section["AuthenticationType"])
                    {
                    case "AzureActiveDirectory":
                        authType        = "AzureActiveDirectory";
                        paramDictionary = new Dictionary <string, string>()
                        {
                            { "TenantId", section["TenantId"] },
                            { "ObjectId", section["ObjectId"] },
                            { "UserName", section["UserName"] },
                            { "Name", section["Name"] },
                            { "Email", section["Email"] }
                        };
                        break;
                    }
                    if (!String.IsNullOrEmpty(authType))
                    {
                        var aUser = user.Register(authType, paramDictionary);
                        if (!_context.RoleMembershipUser.Where(p => p.UserId == aUser.UserId && p.Role.Name.Equals("Administrators")).Any())
                        {
                            var admin             = _context.Role.Where(p => p.Name.Equals("Administrators")).FirstOrDefault();
                            var newRoleMembership = new RoleMembershipUser();
                            newRoleMembership.RoleId = admin.RoleId;
                            newRoleMembership.UserId = aUser.UserId;
                            _context.Add(newRoleMembership);
                        }
                        _context.SaveChanges();
                    }
                }
            }
        }
Beispiel #2
0
        public void ConfigureDb(IEphItUser user, EphItContext _context)
        {
            bool migrateDb = true;

            try
            {
                migrateDb = _context.Database.EnsureCreated();
                if (!migrateDb)
                {
                    migrateDb = _context.Database.GetPendingMigrations().Any();
                }
            }
            catch
            {
                migrateDb = true;
            }
            if (migrateDb)
            {
                _context.Database.Migrate();
                var internalUser = _context.User.Where(p => p.AuthenticationId.Equals((short)AuthenticationEnum.EphItInternal)).First();
                var admin        = _context.Role.Where(p => p.Name.Equals("Administrators")).FirstOrDefault();
                if (admin == null)
                {
                    admin = new Role();
                    admin.CreatedByUserId  = internalUser.UserId;
                    admin.Created          = DateTime.UtcNow;
                    admin.Description      = "Full administrator of all objects";
                    admin.Name             = "Administrators";
                    admin.IsGlobal         = true;
                    admin.Modified         = DateTime.UtcNow;
                    admin.ModifiedByUserId = internalUser.UserId;
                    _context.Add(admin);
                    _context.SaveChanges();
                }
                foreach (RBACActionEnum a in (RBACActionEnum[])Enum.GetValues(typeof(RBACActionEnum)))
                {
                    foreach (RBACObjectEnum b in (RBACObjectEnum[])Enum.GetValues(typeof(RBACObjectEnum)))
                    {
                        if (!_context.RoleObjectAction.Where(p =>
                                                             p.RoleId.Equals(admin.RoleId) &&
                                                             p.RbacObjectId.Equals((short)b) &&
                                                             p.RbacActionId.Equals((short)a)
                                                             )
                            .Any()
                            )
                        {
                            var tempObject = new RoleObjectAction();
                            tempObject.RoleId       = admin.RoleId;
                            tempObject.RbacObjectId = (short)b;
                            tempObject.RbacActionId = (short)a;
                            _context.Add(tempObject);
                        }
                    }
                }
                _context.SaveChanges();
            }
            // Add current user to full admin role
            var vUser = user.RegisterCurrent();

            if (!_context.RoleMembershipUser.Where(p => p.UserId == vUser.UserId && p.Role.Name.Equals("Administrators")).Any())
            {
                var admin             = _context.Role.Where(p => p.Name.Equals("Administrators")).FirstOrDefault();
                var newRoleMembership = new RoleMembershipUser();
                newRoleMembership.RoleId = admin.RoleId;
                newRoleMembership.UserId = vUser.UserId;
                _context.Add(newRoleMembership);
            }
            _context.SaveChanges();
        }