Exemplo n.º 1
0
        public IHttpActionResult GetRealmAssetManifest(string realmName)
        {
            var realm = realmsService.GetRealmByName(realmName);

            if (realm == null)
            {
                return(NotFound());
            }

            if (!Request.CheckAccess(GunchoResources.RealmActions.View, GunchoResources.Realm, realmName))
            {
                return(Forbidden());
            }

            return(Ok(new AssetManifestDto
            {
                Version = 1,
                HistoryUri = Url.Link("GetRealmAssetManifestHistory", new { realmName = realmName }),
                Assets = new[] {
                    new AssetRefDto {
                        Path = "/story.ni",
                        Version = 1,
                        Uri = Url.Link("GetRealmAssetByPath", new { realmName = realmName, path = "story.ni" }),
                        ContentType = ContentTypes.Inform7Source,
                        HistoryUri = Url.Link("GetRealmAssetHistoryByPath", new { realmName = realmName, path = "story.ni" }),
                    },
                },
            }));
        }
Exemplo n.º 2
0
        public IHttpActionResult GetRealmByName(string realmName)
        {
            var realm = realmsService.GetRealmByName(realmName);

            if (realm == null)
            {
                return(NotFound());
            }

            if (!Request.CheckAccess(GunchoResources.RealmActions.View, GunchoResources.Realm, realmName))
            {
                return(Forbidden());
            }

            return(Ok(MakeDto(realm, details: true)));
        }
Exemplo n.º 3
0
        private Task <bool> CheckRealmAccessAsync(ResourceAuthorizationContext context)
        {
            var action    = context.Action.First().Value;
            var realmName = context.Resource.Skip(1).Take(1).Single().Value;

            if (action == GunchoResources.RealmActions.Create)
            {
                return(CheckRealmCreateAccessAsync(context, realmName));
            }

            var realm = realmsService.GetRealmByName(realmName);

            if (realm == null)
            {
                return(Nok());
            }

            var nextResource = context.Resource.Skip(2).FirstOrDefault();

            if (nextResource != null && nextResource.Value == GunchoResources.Asset)
            {
                var asset = context.Resource.Skip(3).First().Value;
                return(CheckRealmAssetAccessAsync(context, realm, asset));
            }

            switch (action)
            {
            case GunchoResources.RealmActions.EnableDisable:
                return(CheckRealmEnableDisableAccessAsync(context, realm));

            case GunchoResources.RealmActions.Edit:
                return(CheckRealmEditAssetsAccessAsync(context, realm));

            case GunchoResources.RealmActions.Join:
                return(CheckRealmJoinAccessAsync(context, realm));

            case GunchoResources.RealmActions.Teleport:
                return(CheckRealmTeleportAccessAsync(context, realm));

            case GunchoResources.RealmActions.List:
            case GunchoResources.RealmActions.View:
            case GunchoResources.RealmActions.ViewHistory:
                return(CheckRealmVisibilityAccessAsync(context, realm));
            }

            return(Nok());
        }