feat: workspace endpoint, template/ssh-key dropdowns, noVNC console integration
This commit is contained in:
@@ -33,6 +33,7 @@ import (
|
||||
"proxui/backend/internal/sshkey"
|
||||
"proxui/backend/internal/template"
|
||||
"proxui/backend/internal/vm"
|
||||
"proxui/backend/internal/workspace"
|
||||
)
|
||||
|
||||
func main() {
|
||||
@@ -108,6 +109,7 @@ func main() {
|
||||
cfg.OperatorToken,
|
||||
)
|
||||
auditHandler := audit.NewHandler(audit.NewSQLRepository(db))
|
||||
workspaceHandler := workspace.NewHandler(workspace.NewRepository(db))
|
||||
|
||||
mux := http.NewServeMux()
|
||||
mux.HandleFunc("GET /healthz", func(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -120,6 +122,10 @@ func main() {
|
||||
_ = json.NewEncoder(w).Encode(principal)
|
||||
})
|
||||
mux.Handle("GET /me", authMiddleware.RequireAuth(profileMiddleware.EnsureProfile(meHandler)))
|
||||
mux.Handle(
|
||||
"GET /me/workspace",
|
||||
authMiddleware.RequireAuth(profileMiddleware.EnsureProfile(http.HandlerFunc(workspaceHandler.GetWorkspace))),
|
||||
)
|
||||
tenantMembershipHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
tenantMembership, _ := membership.FromRequest(r)
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
@@ -206,6 +212,10 @@ func main() {
|
||||
)
|
||||
}
|
||||
mux.Handle("GET /tenants/{tenantID}/audit", auditRoute(auditHandler.ListTenantAudit))
|
||||
mux.Handle(
|
||||
"GET /templates",
|
||||
authMiddleware.RequireAuth(profileMiddleware.EnsureProfile(http.HandlerFunc(templateHandler.ListTemplates))),
|
||||
)
|
||||
templateManageChain := func(handler http.HandlerFunc) http.Handler {
|
||||
return operatorMiddleware.RequireOperator(authorizationMiddleware.Require(rbac.ActionClusterManage, handler))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user