How do I implement role-based access control in Go?

Implementing role-based access control (RBAC) in Go allows you to manage user permissions efficiently according to their roles in your application. This ensures that users can only access resources necessary for their duties.
role-based access control, RBAC, Go, Golang, user permissions, access management
package main import ( "fmt" "net/http" ) // Define roles and their permissions var roles = map[string][]string{ "admin": {"create", "read", "update", "delete"}, "editor": {"create", "read", "update"}, "viewer": {"read"}, } // Check if the role has permission for an action func hasPermission(role string, action string) bool { permissions, exists := roles[role] if !exists { return false } for _, perm := range permissions { if perm == action { return true } } return false } func restrictedHandler(w http.ResponseWriter, r *http.Request) { userRole := r.Header.Get("Role") // In a real scenario, you would get this from the authenticated user's session // Check permission for the desired action if hasPermission(userRole, "delete") { fmt.Fprintf(w, "Access granted to delete resource") } else { http.Error(w, "Forbidden", http.StatusForbidden) } } func main() { http.HandleFunc("/delete", restrictedHandler) http.ListenAndServe(":8080", nil) }

role-based access control RBAC Go Golang user permissions access management