// HandleUpdate handles POST or PUT /pages/1/update func HandleUpdate(context router.Context) error { // Find the page page, err := pages.Find(context.ParamInt("id")) if err != nil { return router.NotFoundError(err) } // Authorise updating the page err = authorise.Resource(context, page) if err != nil { return router.NotAuthorizedError(err) } // Update the page from params params, err := context.Params() if err != nil { return router.InternalError(err) } err = page.Update(params.Map()) if err != nil { return router.InternalError(err) } // We then find the page again, and retreive the new Url, in case it has changed during update page, err = pages.Find(context.ParamInt("id")) if err != nil { return router.NotFoundError(err) } // Redirect to page url return router.Redirect(context, page.Url) }
// HandleShowPath serves requests to a custom page url func HandleShowPath(context router.Context) error { // Setup context for template path := context.Path() // If no pages or users exist, redirect to set up page if missingUsersAndPages() { return router.Redirect(context, "/fragmenta/setup") } q := pages.Query().Where("url=?", path).Limit(1) pages, err := pages.FindAll(q) if err != nil || len(pages) == 0 { return router.NotFoundError(err) } // Get the first of pages to render page := pages[0] // For show path of pages, we authorise showing the page FOR ALL users if it is published if !page.IsPublished() { // Authorise err = authorise.Resource(context, page) if err != nil { return router.NotAuthorizedError(err) } } return renderPage(context, page) }
// HandleUpdate handles the POST of the form to update a post func HandleUpdate(context router.Context) error { // Find the post post, err := posts.Find(context.ParamInt("id")) if err != nil { return router.NotFoundError(err) } // Authorise update post err = authorise.Resource(context, post) if err != nil { return router.NotAuthorizedError(err) } // Update the post from params params, err := context.Params() if err != nil { return router.InternalError(err) } err = post.Update(params.Map()) if err != nil { return router.InternalError(err) } // Redirect to post return router.Redirect(context, post.URLShow()) }
// HandleUpdate handles POST or PUT /images/1/update func HandleUpdate(context router.Context) error { // Find the image image, err := images.Find(context.ParamInt("id")) if err != nil { context.Logf("#error Error finding image %s", err) return router.NotFoundError(err) } // Authorise err = authorise.Resource(context, image) if err != nil { return router.NotAuthorizedError(err) } // Update the image params, err := context.Params() if err != nil { return router.InternalError(err) } err = image.Update(params.Map()) if err != nil { return router.InternalError(err) } // We redirect back to source if redirect param is set return router.Redirect(context, image.URLUpdate()) }
// HandleUpdate serves POST or PUT /tags/1/update func HandleUpdate(context router.Context) error { // Find the tag tag, err := tags.Find(context.ParamInt("id")) if err != nil { return router.NotFoundError(err) } // Authorise err = authorise.Resource(context, tag) if err != nil { return router.NotAuthorizedError(err) } // Update the tag params, err := context.Params() if err != nil { return router.InternalError(err) } err = tag.Update(params.Map()) if err != nil { return router.InternalError(err) } // Redirect to tag return router.Redirect(context, tag.URLShow()) }
// HandleUpdateShow renders the form to update a post func HandleUpdateShow(context router.Context) error { // Find the post post, err := posts.Find(context.ParamInt("id")) if err != nil { return router.NotFoundError(err) } // Authorise update post err = authorise.Resource(context, post) if err != nil { return router.NotAuthorizedError(err) } // Find users for author details users, err := users.FindAll(users.Admins()) if err != nil { return router.NotFoundError(err) } // Render the template view := view.New(context) view.AddKey("post", post) view.AddKey("users", users) return view.Render() }
// HandleUpdate or PUT /users/1/update func HandleUpdate(context router.Context) error { // Find the user id := context.ParamInt("id") user, err := users.Find(id) if err != nil { context.Logf("#error Error finding user %s", err) return router.NotFoundError(err) } // Authorise err = authorise.Resource(context, user) if err != nil { return router.NotAuthorizedError(err) } // We expect only one image, what about replacing the existing when updating? // At present we just create a new image files, err := context.ParamFiles("image") if err != nil { return router.InternalError(err) } // Get the params params, err := context.Params() if err != nil { return router.InternalError(err) } var imageID int64 if len(files) > 0 { fileHandle := files[0] // Create an image (saving the image representation on disk) imageParams := map[string]string{"name": user.Name, "status": "100"} imageID, err = images.Create(imageParams, fileHandle) if err != nil { return router.InternalError(err) } params.Set("image_id", fmt.Sprintf("%d", imageID)) delete(params, "image") } err = user.Update(params.Map()) if err != nil { return router.InternalError(err) } // Redirect to user return router.Redirect(context, user.URLShow()) }
// HandleShow shows pages using their ID: GET /pages/1 func HandleShow(context router.Context) error { // Find the page page, err := pages.Find(context.ParamInt("id")) if err != nil { return router.InternalError(err) } // Authorise access err = authorise.Resource(context, page) if err != nil { return router.NotAuthorizedError(err) } // Render the page return renderPage(context, page) }
// HandleUpdateShow serves a get request at /tags/1/update (show form to update) func HandleUpdateShow(context router.Context) error { // Find the tag tag, err := tags.Find(context.ParamInt("id")) if err != nil { return router.NotFoundError(err) } // Authorise err = authorise.Resource(context, tag) if err != nil { return router.NotAuthorizedError(err) } // Render the template view := view.New(context) view.AddKey("tag", tag) return view.Render() }
// HandleUpdateShow handles GET /pages/1/update (show form to update) func HandleUpdateShow(context router.Context) error { // Find the page page, err := pages.Find(context.ParamInt("id")) if err != nil { context.Logf("#error Error finding page %s", err) return router.NotFoundError(err) } // Authorise updating page err = authorise.Resource(context, page) if err != nil { return router.NotAuthorizedError(err) } // Render the template view := view.New(context) view.AddKey("page", page) return view.Render() }
// POST /users/1/destroy func HandleDestroy(context router.Context) error { // Set the user on the context for checking user, err := users.Find(context.ParamInt("id")) if err != nil { return router.NotFoundError(err) } // Authorise err = authorise.Resource(context, user) if err != nil { return router.NotAuthorizedError(err) } // Destroy the user user.Destroy() // Redirect to users root return router.Redirect(context, user.URLIndex()) }
// HandleShow serves a get request at /images/1 func HandleShow(context router.Context) error { // Find the image image, err := images.Find(context.ParamInt("id")) if err != nil { return router.InternalError(err) } // Authorise err = authorise.Resource(context, image) if err != nil { return router.NotAuthorizedError(err) } // Serve template view := view.New(context) view.AddKey("image", image) return view.Render() }
// POST /pages/1/destroy func HandleDestroy(context router.Context) error { // Set the page on the context for checking page, err := pages.Find(context.ParamInt("id")) if err != nil { return router.NotFoundError(err) } // Authorise err = authorise.Resource(context, page) if err != nil { return router.NotAuthorizedError(err) } // Destroy the page page.Destroy() // Redirect to pages root return router.Redirect(context, page.URLIndex()) }
// HandleDestroy handles a DESTROY request for posts func HandleDestroy(context router.Context) error { // Find the post post, err := posts.Find(context.ParamInt("id")) if err != nil { return router.NotFoundError(err) } // Authorise destroy post err = authorise.Resource(context, post) if err != nil { return router.NotAuthorizedError(err) } // Destroy the post post.Destroy() // Redirect to posts root return router.Redirect(context, post.URLIndex()) }
// HandleDestroy responds to POST /tags/1/destroy func HandleDestroy(context router.Context) error { // Set the tag on the context for checking tag, err := tags.Find(context.ParamInt("id")) if err != nil { return router.NotFoundError(err) } // Authorise err = authorise.Resource(context, tag) if err != nil { return router.NotAuthorizedError(err) } // Destroy the tag tag.Destroy() // Redirect to tags root return router.Redirect(context, tag.URLIndex()) }
// HandleUpdateShow serves a get request at /images/1/update (show form to update) func HandleUpdateShow(context router.Context) error { // Setup context for template view := view.New(context) image, err := images.Find(context.ParamInt("id")) if err != nil { context.Logf("#error Error finding image %s", err) return router.NotFoundError(err) } // Authorise err = authorise.Resource(context, image) if err != nil { return router.NotAuthorizedError(err) } view.AddKey("redirect", context.Param("redirect")) view.AddKey("image", image) return view.Render() }
// HandleUpdateShow serves a get request at /users/1/update (show form to update) func HandleUpdateShow(context router.Context) error { // Setup context for template view := view.New(context) user, err := users.Find(context.ParamInt("id")) if err != nil { context.Logf("#error Error finding user %s", err) return router.NotFoundError(err) } // Authorise err = authorise.Resource(context, user) if err != nil { return router.NotAuthorizedError(err) } view.AddKey("user", user) // view.AddKey("admin_links", helpers.Link("Destroy User", url.Destroy(user), "method=post")) return view.Render() }
// HandleShow displays a single post func HandleShow(context router.Context) error { // Find the post post, err := posts.Find(context.ParamInt("id")) if err != nil { return router.InternalError(err) } // Authorise access only if not published if !post.IsPublished() { err = authorise.Resource(context, post) if err != nil { return router.NotAuthorizedError(err) } } // Render the template view := view.New(context) view.AddKey("post", post) return view.Render() }
// POST /images/1/destroy func HandleDestroy(context router.Context) error { // Set the image on the context for checking image, err := images.Find(context.ParamInt("id")) if err != nil { return router.NotFoundError(err) } // Authorise err = authorise.Resource(context, image) if err != nil { return router.NotAuthorizedError(err) } // Destroy the image image.Destroy() // Redirect to sites - better than images root as a default // but should never be used if we have a redirect return router.Redirect(context, "/sites") }