public static void RequiresBrightstarSystemPermission(this NancyModule module,
                                                       AbstractSystemPermissionsProvider permissionsProvider,
                                                       SystemPermissions get = SystemPermissions.None,
                                                       SystemPermissions post = SystemPermissions.None)
 {
     module.Before.AddItemToEndOfPipeline(ctx=>RequiresAuthorization(ctx, permissionsProvider, get, post));
 }
 public FakeNancyBootstrapper(IBrightstarService brightstarService,
                              AbstractStorePermissionsProvider storePermissionsProvider,
     AbstractSystemPermissionsProvider systemPermissionsProvider)
 {
     _brightstarService = brightstarService;
     _storePermissionsProvider = storePermissionsProvider;
     _systemPermissionsProvider = systemPermissionsProvider;
 }
        public BrightstarBootstrapper()
        {
            var config = ConfigurationManager.GetSection("brightstarService") as BrightstarServiceConfiguration;
            if (config == null) throw new ConfigurationErrorsException(Strings.NoServiceConfiguration);

            _brightstarService = BrightstarService.GetClient(config.ConnectionString);
            _storePermissionsProvider = config.StorePermissionsProvider;
            _systemPermissionsProvider = config.SystemPermissionsProvider;
        }
 /// <summary>
 /// Creates a new bootstrapper with store and system access goverened by the specified providers.
 /// </summary>
 /// <param name="brightstarService">The connection to the BrightstarDB stores</param>
 /// <param name="storePermissionsProvider">The store permissions provider to be used by the service</param>
 /// <param name="systemPermissionsProvider">The system permissions provider to be used by the service</param>
 /// <param name="rootPath">The path to the directory containing the service Views and assets folder</param>
 public BrightstarBootstrapper(IBrightstarService brightstarService,
                               AbstractStorePermissionsProvider storePermissionsProvider,
                               AbstractSystemPermissionsProvider systemPermissionsProvider,
     string rootPath = null)
 {
     _brightstarService = brightstarService;
     _storePermissionsProvider = storePermissionsProvider;
     _systemPermissionsProvider = systemPermissionsProvider;
     _rootPathProvider = (rootPath == null ? new DefaultRootPathProvider() : new FixedRootPathProvider(rootPath) as IRootPathProvider);
     //_rootPathProvider = new FixedRootPathProvider(rootPath);
 }
Beispiel #5
0
        public StoresModule(IBrightstarService brightstarService, AbstractSystemPermissionsProvider systemPermissionsProvider)
        {
            this.RequiresBrightstarSystemPermission(systemPermissionsProvider, get:SystemPermissions.ListStores, post:SystemPermissions.CreateStore);

            Get["/"] = parameters =>
            {
                ViewBag.Title = "Stores";
                var stores = brightstarService.ListStores();
                return
                    Negotiate.WithModel(new StoresResponseModel
                        {
                            Stores = stores.ToList()
                        });
                };

            Post["/"] = parameters =>
                {
                    ViewBag.Title = "Stores";
                    var request = this.Bind<CreateStoreRequestObject>();
                    if (request == null || String.IsNullOrEmpty(request.StoreName))
                    {
                        return HttpStatusCode.BadRequest;
                    }

                    // Return 409 Conflict if attempt to create a store with a name that is currently in use
                    if (brightstarService.DoesStoreExist(request.StoreName))
                    {
                        return HttpStatusCode.Conflict;
                    }

                    // Attempt to create the store
                    try
                    {
                        PersistenceType? storePersistenceType = request.GetBrightstarPersistenceType();
                        if (storePersistenceType.HasValue)
                        {
                            brightstarService.CreateStore(request.StoreName, storePersistenceType.Value);
                        }
                        else
                        {
                            brightstarService.CreateStore(request.StoreName);
                        }
                    }
                    catch (ArgumentException)
                    {
                        return HttpStatusCode.BadRequest;   
                    }
                    return
                        Negotiate.WithModel(new StoreResponseModel(request.StoreName))
                                 .WithStatusCode(HttpStatusCode.Created);
                };
        }
        /// <summary>
        /// Create a new bootstrapper that initializes itself from the brightstarService section
        /// of the application (or web) configuration file.
        /// </summary>
        /// <exception cref="ConfigurationErrorsException">Raised if the brightstarService configuration
        /// section does not exist in the application configuration file, or if the configuration is
        /// invalid.</exception>
        public BrightstarBootstrapper()
        {
            var config = ConfigurationManager.GetSection("brightstarService") as BrightstarServiceConfiguration;
            if (config == null) throw new ConfigurationErrorsException(Strings.NoServiceConfiguration);

            _brightstarService = BrightstarService.GetClient(config.ConnectionString);
            _storePermissionsProvider = config.StorePermissionsProvider ??
                                        new FallbackStorePermissionsProvider(StorePermissions.All);
            _systemPermissionsProvider = config.SystemPermissionsProvider ??
                                         new FallbackSystemPermissionsProvider(SystemPermissions.All);
            _authenticationProviders = config.AuthenticationProviders ??
                                       new Collection<IAuthenticationProvider> {new NullAuthenticationProvider()};
        }
        private static Response RequiresAuthorization(NancyContext context,
                                                      AbstractSystemPermissionsProvider permissionsProvider,
                                                      SystemPermissions get, SystemPermissions post)
        {
            var permissionsRequired = SystemPermissions.None;
            switch (context.Request.Method.ToUpperInvariant())
            {
                case "GET":
                case "HEAD":
                    permissionsRequired = get;
                    break;
                case "POST":
                    permissionsRequired = post;
                    break;
            }
            if (permissionsRequired == SystemPermissions.None) return HttpStatusCode.Unauthorized;

            if (!permissionsProvider.HasPermissions(context.CurrentUser, permissionsRequired))
            {
                return HttpStatusCode.Unauthorized;
            }
            return null;
        }
        /// <summary>
        /// Creates a new bootstrapper with store and system access goverened by the specified providers.
        /// </summary>
        /// <param name="brightstarService">The connection to the BrightstarDB stores</param>
        /// <param name="authenticationProviders">An enumeration of the authentication providers to be used by the service</param>
        /// <param name="storePermissionsProvider">The store permissions provider to be used by the service</param>
        /// <param name="systemPermissionsProvider">The system permissions provider to be used by the service</param>
        /// <param name="rootPath">The path to the directory containing the service Views and assets folder</param>
        /// <exception cref="ArgumentNullException">Raised if any of the arguments to the method other than <paramref name="rootPath"/> are Null.</exception>
        public BrightstarBootstrapper(IBrightstarService brightstarService,
                                      IEnumerable<IAuthenticationProvider> authenticationProviders,
                                      AbstractStorePermissionsProvider storePermissionsProvider,
                                      AbstractSystemPermissionsProvider systemPermissionsProvider,
                                      string rootPath = null)
        {
            if (brightstarService == null) throw new ArgumentNullException("brightstarService");
            if (authenticationProviders == null) throw new ArgumentNullException("authenticationProviders");
            if (storePermissionsProvider == null) throw new ArgumentNullException("storePermissionsProvider");
            if (systemPermissionsProvider == null) throw new ArgumentNullException("systemPermissionsProvider");

            _brightstarService = brightstarService;
            _authenticationProviders = authenticationProviders;
            _storePermissionsProvider = storePermissionsProvider;
            _systemPermissionsProvider = systemPermissionsProvider;
            _rootPathProvider = (rootPath == null
                                     ? new DefaultRootPathProvider()
                                     : new FixedRootPathProvider(rootPath) as IRootPathProvider);
        }
 public CombiningSystemPermissionsProvider(AbstractSystemPermissionsProvider first,
                                           AbstractSystemPermissionsProvider second)
 {
     _first = first;
     _second = second;
 }
 public CombiningSystemPermissionsProvider(AbstractSystemPermissionsProvider first,
                                           AbstractSystemPermissionsProvider second)
 {
     _first  = first;
     _second = second;
 }