import ( "net/http" "github.com/globocom/tsuru/auth" ) func AuthMiddleware(handler http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { token, err := auth.ReadToken(r) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } user, err := auth.GetTokenUser(token) if err != nil { http.Error(w, err.Error(), http.StatusUnauthorized) return } ctx := context.WithValue(r.Context(), auth.TokenUserKey, user) handler.ServeHTTP(w, r.WithContext(ctx)) }) }
import ( "fmt" "github.com/globocom/tsuru/auth" ) func GetUserGroups(token string) ([]string, error) { user, err := auth.GetTokenUser(token) if err != nil { return nil, err } groups := user.Groups() fmt.Printf("%s is in groups: %v", user.GetName(), groups) return groups, nil }