github.com/bitcubate/cryptojournal@v1.2.5-0.20171102134152-f578b3d788ab/src/lib/templates/fragmenta_resources/actions/update.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  // HandleUpdateShow renders the form to update a [[ .fragmenta_resource ]].
    16  func HandleUpdateShow(w http.ResponseWriter, r *http.Request) error {
    17  
    18  	// Fetch the  params
    19  	params, err := mux.Params(r)
    20  	if err != nil {
    21  		return server.InternalError(err)
    22  	}
    23  	
    24  	// Find the [[ .fragmenta_resource ]]
    25  	[[ .fragmenta_resource ]], err := [[ .fragmenta_resources ]].Find(params.GetInt([[ .fragmenta_resources ]].KeyName))
    26  	if err != nil {
    27  		return server.NotFoundError(err)
    28  	}
    29  
    30  	// Authorise update [[ .fragmenta_resource ]]
    31  	err = can.Update([[ .fragmenta_resource ]], session.CurrentUser(w, r))
    32  	if err != nil {
    33  		return server.NotAuthorizedError(err)
    34  	}
    35  
    36  	// Render the template
    37  	view := view.NewRenderer(w, r)
    38  	view.AddKey("[[ .fragmenta_resource ]]", [[ .fragmenta_resource ]])
    39  	return view.Render()
    40  }
    41  
    42  // HandleUpdate handles the POST of the form to update a [[ .fragmenta_resource ]]
    43  func HandleUpdate(w http.ResponseWriter, r *http.Request) error {
    44  
    45  	// Fetch the  params
    46  	params, err := mux.Params(r)
    47  	if err != nil {
    48  		return server.InternalError(err)
    49  	}
    50  	
    51  	// Find the [[ .fragmenta_resource ]]
    52  	[[ .fragmenta_resource ]], err := [[ .fragmenta_resources ]].Find(params.GetInt([[ .fragmenta_resources ]].KeyName))
    53  	if err != nil {
    54  		return server.NotFoundError(err)
    55  	}
    56  
    57  	// Check the authenticity token
    58  	err = session.CheckAuthenticity(w, r)
    59  	if err != nil {
    60  		return err
    61  	}
    62  
    63  	// Authorise update [[ .fragmenta_resource ]]
    64  	err = can.Update([[ .fragmenta_resource ]], session.CurrentUser(w, r))
    65  	if err != nil {
    66  		return server.NotAuthorizedError(err)
    67  	}
    68  
    69  	// Validate the params, removing any we don't accept
    70  	[[ .fragmenta_resource ]]Params := [[ .fragmenta_resource ]].ValidateParams(params.Map(), [[ .fragmenta_resources ]].AllowedParams())
    71  
    72  	err = [[ .fragmenta_resource ]].Update([[ .fragmenta_resource ]]Params)
    73  	if err != nil {
    74  		return server.InternalError(err)
    75  	}
    76  
    77  	// Redirect to [[ .fragmenta_resource ]]
    78  	return server.Redirect(w, r, [[ .fragmenta_resource ]].ShowURL())
    79  }