Exemple #1
0
        /// <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}"));
            }
        }