github.com/saadullahsaeed/fragmenta-cms@v1.5.4/src/users/actions/show.go (about)

     1  package useractions
     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/fragmenta/fragmenta-cms/src/lib/session"
    12  	"github.com/fragmenta/fragmenta-cms/src/users"
    13  )
    14  
    15  // HandleShow displays a single user.
    16  func HandleShow(w http.ResponseWriter, r *http.Request) error {
    17  
    18  	// Get the user params for id
    19  	params, err := mux.Params(r)
    20  	if err != nil {
    21  		return server.InternalError(err)
    22  	}
    23  
    24  	// Find the user
    25  	user, err := users.Find(params.GetInt(users.KeyName))
    26  	if err != nil {
    27  		return server.NotFoundError(err)
    28  	}
    29  
    30  	// Authorise access
    31  	currentUser := session.CurrentUser(w, r)
    32  	err = can.Show(user, currentUser)
    33  	if err != nil {
    34  		return server.NotAuthorizedError(err)
    35  	}
    36  
    37  	// Render the template
    38  	view := view.NewRenderer(w, r)
    39  	view.CacheKey(user.CacheKey())
    40  	view.AddKey("user", user)
    41  	view.AddKey("currentUser", currentUser)
    42  	return view.Render()
    43  }