// app/controllers/base_controller.go
package controllers
type User struct {
ID string
}
type AuthenticatedUser struct {
*User
}
func (c *BaseController) GenUser() (*User, error) {
value, ok, err := c.SessionGet("user_id")
if err != nil {
return nil, err
}
userID, _ := value.(string)
if !ok || userID == "" {
return nil, nil
}
return &User{ID: userID}, nil
}
func (c *BaseController) GenAuthenticatedUser(user *User) (*AuthenticatedUser, error) {
if user == nil {
return nil, ErrLoginRequired
}
return &AuthenticatedUser{User: user}, nil
}
func (c *BaseController) BeforeAction(user *User) error {
c.Set("current_user", user)
return nil
}
// app/controllers/admin_controller/admincontroller.go
package admincontroller
import "sample_app/app/controllers"
func (c *AdminController) Index(user *controllers.AuthenticatedUser) error {
c.Set("title", "Admin")
c.Set("user", user)
return nil
}