github.com/bitcubate/cryptojournal@v1.2.5-0.20171102134152-f578b3d788ab/src/lib/templates/fragmenta_resources/actions/create.go.tmpl (about) 1 package [[ .fragmenta_resource ]]actions 2 3 import ( 4 "net/http" 5 6 "github.com/fragmenta/auth/can" 7 "github.com/fragmenta/mux" 8 "github.com/fragmenta/server" 9 "github.com/fragmenta/view" 10 11 "github.com/bitcubate/cryptojournal/src/lib/session" 12 "github.com/bitcubate/cryptojournal/src/[[ .fragmenta_resources ]]" 13 ) 14 15 // HandleCreateShow serves the create form via GET for [[ .fragmenta_resources ]]. 16 func HandleCreateShow(w http.ResponseWriter, r *http.Request) error { 17 18 [[ .fragmenta_resource ]] := [[ .fragmenta_resources ]].New() 19 20 // Authorise 21 err := can.Create([[ .fragmenta_resource ]], session.CurrentUser(w, r)) 22 if err != nil { 23 return server.NotAuthorizedError(err) 24 } 25 26 // Render the template 27 view := view.NewRenderer(w, r) 28 view.AddKey("[[ .fragmenta_resource ]]", [[ .fragmenta_resource ]]) 29 return view.Render() 30 } 31 32 // HandleCreate handles the POST of the create form for [[ .fragmenta_resources ]] 33 func HandleCreate(w http.ResponseWriter, r *http.Request) error { 34 35 [[ .fragmenta_resource ]] := [[ .fragmenta_resources ]].New() 36 37 // Check the authenticity token 38 err := session.CheckAuthenticity(w, r) 39 if err != nil { 40 return err 41 } 42 43 // Authorise 44 err = can.Create([[ .fragmenta_resource ]], session.CurrentUser(w, r)) 45 if err != nil { 46 return server.NotAuthorizedError(err) 47 } 48 49 // Setup context 50 params, err := mux.Params(r) 51 if err != nil { 52 return server.InternalError(err) 53 } 54 55 // Validate the params, removing any we don't accept 56 [[ .fragmenta_resource ]]Params := [[ .fragmenta_resource ]].ValidateParams(params.Map(), [[ .fragmenta_resources ]].AllowedParams()) 57 58 id, err := [[ .fragmenta_resource ]].Create([[ .fragmenta_resource ]]Params) 59 if err != nil { 60 return server.InternalError(err) 61 } 62 63 // Redirect to the new [[ .fragmenta_resource ]] 64 [[ .fragmenta_resource ]], err = [[ .fragmenta_resources ]].Find(id) 65 if err != nil { 66 return server.InternalError(err) 67 } 68 69 return server.Redirect(w, r, [[ .fragmenta_resource ]].IndexURL()) 70 }