/// <summary> /// Create the standard records in Permission table, if they don't exist. /// Similar to SeedDatabase extension's job. /// </summary> private void CreatePermissionsIfNeeded() { var repo = DatabaseFixture.Storage.GetRepository <IPermissionRepository>(); if (repo.All().FirstOrDefault(p_ => p_.Id == Permission.Admin.ToString()) != null) { return; } // Base permissions not already created Permission[] permissions = (Permission[])Enum.GetValues(typeof(Permission)); foreach (var p in permissions) { // create a permission object out of the enum value Security.Data.Entities.Permission permission = new Security.Data.Entities.Permission() { Id = PermissionHelper.GetPermissionName(p), Name = PermissionHelper.GetPermissionName(p) }; repo.Create(permission); } DatabaseFixture.Storage.Save(); }
private IActionResult SavePermissions() { Permission[] permissions = (Permission[])Enum.GetValues(typeof(Permission)); foreach (var p in permissions) { // create a permission object out of the enum value Security.Data.Entities.Permission permission = new Security.Data.Entities.Permission() { Id = p.GetPermissionName(), Name = p.GetPermissionName() }; _storage.GetRepository <IPermissionRepository>().Create(permission); } // Permission for Chinook administration Security.Data.Entities.Permission permission1 = new Security.Data.Entities.Permission() { Id = "Chinook.Admin", // OriginExtension + Name Name = "Admin" }; _storage.GetRepository <IPermissionRepository>().Create(permission1); try { _storage.Save(); _logger.LogInformation("\"Saving permissions ok.\""); return(Ok($"Saving permissions {permission1.Name} ok.")); } catch (Exception e) { _logger.LogCritical("\"Error saving permission (@permission): {@message}, \n\rInnerException: {@innerException} \n\rStackTrace: {@stackTrace} \"", permission1.Name, e.Message, e.InnerException, e.StackTrace); return(StatusCode(StatusCodes.Status500InternalServerError, $"Cannot save permissions. Error: {e.Message}")); } }