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 }