You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
OneAuth/api/oauth/init.go

34 lines
1.4 KiB
Go

// Copyright (C) 2024 veypi <i@veypi.com>
// 2025-03-04 16:08:06
// Distributed under terms of the MIT license.
package oauth
1 week ago
import (
"github.com/veypi/vbase/api/oauth/providers"
1 week ago
"github.com/veypi/vbase/auth"
"github.com/veypi/vigo"
)
var Router = vigo.NewRouter()
func init() {
// === OAuth 公开端点(跳过认证)===
Router.Get("/authorize", "授权端点", vigo.SkipBefore, authorize)
Router.Post("/token", "令牌端点", vigo.SkipBefore, token)
Router.Post("/revoke", "撤销令牌", vigo.SkipBefore, revoke)
Router.Get("/userinfo", "用户信息(OIDC)", userInfo)
Router.Get("/.well-known/openid-configuration", "OIDC发现文档", vigo.SkipBefore, discovery)
// === OAuth 客户端管理(需要认证)===
clientRouter := Router.SubRouter("/clients")
clientRouter.Get("/", "OAuth客户端列表", auth.VBaseAuth.Perm("oauth-client:read"), listClients)
clientRouter.Post("/", "创建OAuth客户端", auth.VBaseAuth.Perm("oauth-client:create"), createClient)
clientRouter.Get("/{client_id}", "获取客户端详情", auth.VBaseAuth.Perm("oauth-client:read"), getClient)
clientRouter.Patch("/{client_id}", "更新OAuth客户端", auth.VBaseAuth.Perm("oauth-client:update"), updateClient)
clientRouter.Delete("/{client_id}", "删除OAuth客户端", auth.VBaseAuth.Perm("oauth-client:delete"), deleteClient)
// === OAuth 提供商管理 ===
Router.Extend("/providers", providers.Router)
}