public ActionResult CreateJob(string subscription, string storeId, string jobType, string jobData)
        {
            Trace.TraceInformation("CreateJob: {0}, {1}, {2}, {3}", subscription, storeId, jobType, jobData);
            try
            {
                JobType parsedJobType;
                if (!Enum.TryParse(jobType, true, out parsedJobType))
                {
                    return(new HttpStatusCodeResult(400, "Unrecognized job type"));
                }
                StoreAccessLevel requiredAccess = StoreAccessLevel.Write;
                switch (parsedJobType)
                {
                case JobType.Transaction:
                case JobType.Import:
                case JobType.SparqlUpdate:
                    requiredAccess = StoreAccessLevel.Write;
                    break;

                case JobType.Export:
                    requiredAccess = StoreAccessLevel.Export;
                    break;

                case JobType.Consolidate:
                case JobType.DeleteStore:

                    requiredAccess = StoreAccessLevel.Admin;
                    break;
                }
                var userAccess = (StoreAccessLevel)RouteData.Values["_accessLevel"];
                if ((userAccess & requiredAccess) == 0)
                {
                    Trace.TraceInformation("CreateJob: {0} {1} : Insufficient user access privileges", subscription, storeId);
                    return(new HttpStatusCodeResult(403, "Insufficient privileges"));
                }
                var jobId = BrightstarCluster.Instance.StartJob(storeId, parsedJobType, jobData);
                Trace.TraceInformation("Started Job {0}", jobId);
                var jobUri = UrlHelper.GenerateUrl("ApiJobsResource", null, null,
                                                   new RouteValueDictionary(new { subscription, storeName = storeId, id = jobId }),
                                                   RouteTable.Routes, ControllerContext.RequestContext, false);
                Response.Headers.Add("Location", jobUri);
                return(new HttpStatusCodeResult(201));
            }
            catch (Exception ex)
            {
                Trace.TraceError("Exception in JobResourceController.CreateJob: " + ex);
                throw;
            }
        }
Example #2
0
 public AccessLevelAuthorizeAttribute(StoreAccessLevel requiredAccessLevel)
 {
     _requiredAccessLevel = requiredAccessLevel;
 }
 public PortalAuthorizeAttribute(StoreAccessLevel requiredAccessLevel, string storeIdKey)
 {
     _requiredAccessLevel = requiredAccessLevel;
     _storeIdKey = storeIdKey;
 }
 public bool GrantAccess(string ownerAccountId, string storeId, string userAccountId, StoreAccessLevel accessLevel)
 {
     throw new NotImplementedException();
 }
 public PortalAuthorizeAttribute(StoreAccessLevel requiredAccessLevel, string storeIdKey)
 {
     _requiredAccessLevel = requiredAccessLevel;
     _storeIdKey          = storeIdKey;
 }
 public AccessLevelAuthorizeAttribute(StoreAccessLevel requiredAccessLevel)
 {
     _requiredAccessLevel = requiredAccessLevel;
 }
Example #7
0
 public bool GrantAccess(string ownerAccountId, string storeId, string userAccountId, StoreAccessLevel accessLevel)
 {
     throw new NotImplementedException();
 }