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  }