Ejemplo n.º 1
0
        public ActionResult <Image> EditImageMethod(Image image, int admin_id, string admin_token, int site_id)
        {
            //check available (better way to do this?);
            Image queried_image;

            try{
                queried_image = dbQuery.QueryImageById(image.image_id);
            }catch {
                JsonFailure f = new JsonFailure($"Image Id: {image.image_id} not found.");
                return(StatusCode(400, f));
            }

            //verify and change
            if (authenticator.VerifyAdminForLeaf(admin_id, queried_image.site_id, admin_token))
            {
                DataPlan data_plan;
                try{
                    data_plan = _dataLimiter.ValidateDataPlanB(admin_id, queried_image, image);
                }catch (System.ArgumentException e) {
                    return(StatusCode(400, e.Message));
                }

                Image changed_image = dbQuery.EditImage(image);
                _dataLimiter.UpdateDataPlan(data_plan);
                return(changed_image);
            }
            else
            {
                return(StatusCode(400, "Invalid credentials."));
            }
        }
Ejemplo n.º 2
0
        public ActionResult <Portrait> EditPortraitMethod(Portrait portrait, int admin_id, string admin_token, int site_id)
        {
            Portrait queried_portrait;

            try{
                queried_portrait = dbQuery.QueryPortraitById(portrait.portrait_id);
            }catch {
                JsonFailure f = new JsonFailure($"Portrait Id: {portrait.portrait_id} not found.");
                return(StatusCode(400, f));
            }

            if (authenticator.VerifyAdminForLeaf(admin_id, queried_portrait.site_id, admin_token))
            {
                DataPlan data_plan;
                try{
                    data_plan = _dataLimiter.ValidateDataPlanB(admin_id, queried_portrait, portrait);
                }catch (System.ArgumentException e) {
                    return(StatusCode(400, e.Message));
                }

                Portrait changed_portrait = dbQuery.EditPortrait(portrait);
                _dataLimiter.UpdateDataPlan(data_plan);
                return(changed_portrait);
            }
            else
            {
                return(StatusCode(400, "Invalid credentials."));
            }
        }
Ejemplo n.º 3
0
        //Component Edit Methods
        public ActionResult <ParagraphBox> EditParagraphBoxMethod(ParagraphBox paragraph_box, int admin_id, string admin_token, int site_id)
        {
            //check available (better way to do this?)
            ParagraphBox queried_paragraph_box;

            try{
                queried_paragraph_box = dbQuery.QueryParagraphBoxById(paragraph_box.paragraph_box_id);
            }catch {
                JsonFailure f = new JsonFailure($"paragraph_box Id: {paragraph_box.paragraph_box_id} not found.");
                return(StatusCode(400, f));
            }

            //verify and change
            if (authenticator.VerifyAdminForLeaf(admin_id, queried_paragraph_box.site_id, admin_token))
            {
                DataPlan data_plan;
                try{
                    data_plan = _dataLimiter.ValidateDataPlanB(admin_id, queried_paragraph_box, paragraph_box);
                }catch (System.ArgumentException e) {
                    return(StatusCode(400, e.Message));
                }

                ParagraphBox changed_tcb = dbQuery.EditParagraphBox(paragraph_box);
                _dataLimiter.UpdateDataPlan(data_plan);
                return(paragraph_box);
            }
            else
            {
                return(StatusCode(400, "Invalid credentials."));
            }
        }
Ejemplo n.º 4
0
        public ActionResult <TwoColumnBox> EditTwoColumnBoxMethod(TwoColumnBox tc_box, int admin_id, string admin_token, int site_id)
        {
            //check available (better way to do this?)
            TwoColumnBox queried_tc_box;

            try{
                queried_tc_box = dbQuery.QueryTwoColumnBoxById(tc_box.two_column_box_id);
            }catch {
                JsonFailure f = new JsonFailure($"Two Column Box Id: {tc_box.two_column_box_id} not found.");
                return(StatusCode(400, f));
            }

            if (authenticator.VerifyAdminForLeaf(admin_id, queried_tc_box.site_id, admin_token))
            {
                DataPlan data_plan;
                try{
                    data_plan = _dataLimiter.ValidateDataPlanB(admin_id, queried_tc_box, tc_box);
                }catch (System.ArgumentException e) {
                    return(StatusCode(400, e.Message));
                }

                TwoColumnBox changed_tcb = dbQuery.EditTwoColumnBox(tc_box);
                _dataLimiter.UpdateDataPlan(data_plan);
                return(changed_tcb);
            }
            else
            {
                return(StatusCode(400, "Invalid credentials."));
            }
        }
Ejemplo n.º 5
0
        public ActionResult <JsonResponse> DeleteNavLinkMethod(int admin_id, string admin_token, int site_id, int link_id)
        {
            if (authenticator.VerifyAdminForLeaf(admin_id, site_id, admin_token))
            {
                List <NavLink> found_nav_links;
                try{
                    found_nav_links = dbQuery.QueryNavBarLinksBySiteId(site_id);
                }catch {
                    return(StatusCode(400, $"Link ID {link_id} not found on site id {site_id}'s Nav Bar"));
                }
                NavLink found_link = null;
                foreach (NavLink link in found_nav_links)
                {
                    if (link.link_id == link_id)
                    {
                        found_link = link;
                    }
                }
                if (found_link == null)
                {
                    return(StatusCode(400, $"Link ID {link_id} not found on site id {site_id}'s Nav Bar"));
                }
                _dataLimiter.RemoveNavLinkFromDataPlan(found_link, admin_id);

                dbQuery.DeleteNavLinkById(link_id);
                return(new JsonSuccess($"NavLink Deleted for link id: {link_id}"));
            }
            else
            {
                JsonFailure f = new JsonFailure("Invalid credentials.");
                return(StatusCode(400, f));
            }
        }
Ejemplo n.º 6
0
        public ActionResult <ViewSession> genUserSessionMethod(ViewSession NewSession)
        {
            bool verdict = false;

            try{ //load object
                verdict = (NewSession.token == "duaiosfbol");
                NewSession.session_id = 0;
                NewSession.url        = _urlFormatter.StripDomainFromUrl(NewSession.url);
                NewSession.token      = _gen.GenerateToken();
                NewSession.site_id    = _dbQuery.querySiteIdForUrl(NewSession.url);
            }catch { //invalid object
                JsonFailure f = new JsonFailure($"Unable to parse object. See documentation.");
                return(StatusCode(400, f));
            }

            if (verdict == true)
            {
                return(_dbQuery.addSession(NewSession));
            }
            else                  //authentication fail
            {
                JsonFailure f = new JsonFailure($"Unauthorised use. See documentation.");
                return(StatusCode(400, f));
            }
        }
Ejemplo n.º 7
0
        public ActionResult <JsonResponse> PostMethod(NewSiteDto NewSite)
        {
            if (authenticator.VerifyAdmin(NewSite.admin_id, NewSite.token))
            {
                string verdict = validator.ValidateSiteUrl(NewSite.url);
                if (verdict == "pass")
                {
                    DataPlan data_plan;
                    try{
                        data_plan = _dataLimiter.ValidateSiteAdditionForDataPlan(NewSite.admin_id);
                    }catch (System.ArgumentException e) {
                        return(StatusCode(400, e.Message));
                    }

                    Site SoonToAddSite = new Site();
                    SoonToAddSite.title    = NewSite.title;
                    SoonToAddSite.admin_id = NewSite.admin_id;
                    SoonToAddSite.url      = NewSite.url.ToLower();
                    List <string> format_errors = authenticator.ValidateIncomingSite(SoonToAddSite);
                    if (format_errors.Count != 0)
                    {
                        return(StatusCode(400, format_errors[0]));
                    }
                    dbQuery.AddSite(SoonToAddSite);
                    _dataLimiter.UpdateDataPlan(data_plan);
                    JsonResponse r = new JsonSuccess($"Site created with title: ${NewSite.title}");
                    return(r);
                }
                else
                {
                    JsonFailure f = new JsonFailure(verdict);
                    return(StatusCode(400, f));
                }
            }
            else
            {
                return(StatusCode(400, "Invalid Token. Stranger Danger."));
            }
        }
Ejemplo n.º 8
0
        public ActionResult <JsonResponse> UpdateSessionMethod(ViewSession CurrentSession)
        {
            ViewSession QueriedSession;

            System.Console.WriteLine($"Current session ID: {CurrentSession.session_id}");
            try{
                QueriedSession = _dbQuery.querySessionById(CurrentSession.session_id);
            }catch (ArgumentException e) {
                JsonFailure f = new JsonFailure(e.Message);
                return(StatusCode(400, f));
            }

            if (QueriedSession.token == CurrentSession.token)
            {
                _dbQuery.updateSession(CurrentSession);
                return(new JsonSuccess("Session Updated."));
            }
            else    //auth fail
            {
                JsonFailure f = new JsonFailure($"Invalid token for session ID: {CurrentSession.session_id}.");
                return(StatusCode(400, f));
            }
        }
Ejemplo n.º 9
0
 public ActionResult <JsonResponse> DeleteAuthenticatedSiteComponentMethod(ComponentReference Component)
 {
     if (Component.component_type == "p_box")
     {
         try{
             ParagraphBox paragraph_box = dbQuery.DeleteParagraphBox(Component.component_id);
             Site         parent_site   = dbQuery.QueryFeaturelessSiteById(paragraph_box.site_id);
             _dataLimiter.RemoveFromDataPlan(paragraph_box, parent_site.admin_id);
             JsonResponse r = new JsonSuccess("Paragraph box deleted sucessfully!");
             return(r);
         }catch {
             JsonFailure f = new JsonFailure($"Unable to find paragraph box id {Component.component_id}");
             return(StatusCode(400, f));
         }
     }
     else if (Component.component_type == "image")
     {
         try{
             Image image       = dbQuery.DeleteImage(Component.component_id);
             Site  parent_site = dbQuery.QueryFeaturelessSiteById(image.site_id);
             _dataLimiter.RemoveFromDataPlan(image, parent_site.admin_id);
             JsonResponse r = new JsonSuccess("Image deleted sucessfully!");
             return(r);
         }catch {
             JsonFailure f = new JsonFailure($"Unable to find image id {Component.component_id}");
             return(StatusCode(400, f));
         }
     }
     else if (Component.component_type == "portrait")
     {
         try{
             Portrait portrait    = dbQuery.DeletePortrait(Component.component_id);
             Site     parent_site = dbQuery.QueryFeaturelessSiteById(portrait.site_id);
             _dataLimiter.RemoveFromDataPlan(portrait, parent_site.admin_id);
             JsonResponse r = new JsonSuccess("Portrait component deleted sucessfully!");
             return(r);
         }catch {
             JsonFailure f = new JsonFailure($"Unable to find portrait id {Component.component_id}");
             return(StatusCode(400, f));
         }
     }
     else if (Component.component_type == "2c_box")
     {
         try{
             TwoColumnBox two_column_box = dbQuery.DeleteTwoColumnBox(Component.component_id);
             Site         parent_site    = dbQuery.QueryFeaturelessSiteById(two_column_box.site_id);
             _dataLimiter.RemoveFromDataPlan(two_column_box, parent_site.admin_id);
             JsonResponse r = new JsonSuccess("Two Column Box component deleted sucessfully!");
             return(r);
         }catch {
             JsonFailure f = new JsonFailure($"Unable to find two column box id {Component.component_id}");
             return(StatusCode(400, f));
         }
     }
     else if (Component.component_type == "link_box")
     {
         try{
             LinkBox link_box    = dbQuery.DeleteLinkBox(Component.component_id);
             Site    parent_site = dbQuery.QueryFeaturelessSiteById(link_box.site_id);
             _dataLimiter.RemoveFromDataPlan(link_box, parent_site.admin_id);
             JsonResponse r = new JsonSuccess("Link Box component deleted sucessfully!");
             return(r);
         }catch {
             JsonFailure f = new JsonFailure($"Unable to find link box id {Component.component_id}");
             return(StatusCode(400, f));
         }
     }
     else
     {
         JsonFailure f = new JsonFailure("Type mismatch. Type does not match any known components.");
         return(StatusCode(400, f));
     }
 }