mirror of
https://github.com/go-gitea/gitea.git
synced 2025-07-26 11:04:27 -04:00
Refactor OAuth authentication structures and endpoints to unify AuthSourceOption usage
This commit is contained in:
parent
983e648a1f
commit
098de090af
13
modules/structs/auth.go
Normal file
13
modules/structs/auth.go
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
// Copyright 2025 The Gitea Authors. All rights reserved.
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
package structs
|
||||||
|
|
||||||
|
type AuthSourceOption struct {
|
||||||
|
ID int64 `json:"id"`
|
||||||
|
AuthenticationName string `json:"authentication_name" binding:"Required"`
|
||||||
|
TypeName string `json:"type_name"`
|
||||||
|
|
||||||
|
IsActive bool `json:"is_active"`
|
||||||
|
IsSyncEnabled bool `json:"is_sync_enabled"`
|
||||||
|
}
|
@ -3,15 +3,6 @@
|
|||||||
|
|
||||||
package structs
|
package structs
|
||||||
|
|
||||||
type AuthOauth2Option struct {
|
|
||||||
ID int64 `json:"id"`
|
|
||||||
AuthenticationName string `json:"authentication_name" binding:"Required"`
|
|
||||||
TypeName string `json:"type_name"`
|
|
||||||
|
|
||||||
IsActive bool `json:"is_active"`
|
|
||||||
IsSyncEnabled bool `json:"is_sync_enabled"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateUserOption create user options
|
// CreateUserOption create user options
|
||||||
type CreateAuthOauth2Option struct {
|
type CreateAuthOauth2Option struct {
|
||||||
AuthenticationName string `json:"authentication_name" binding:"Required"`
|
AuthenticationName string `json:"authentication_name" binding:"Required"`
|
||||||
|
59
routers/api/v1/admin/auth.go
Normal file
59
routers/api/v1/admin/auth.go
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
// Copyright 2025 The Gitea Authors. All rights reserved.
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
package admin
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
auth_model "code.gitea.io/gitea/models/auth"
|
||||||
|
"code.gitea.io/gitea/models/db"
|
||||||
|
api "code.gitea.io/gitea/modules/structs"
|
||||||
|
"code.gitea.io/gitea/routers/api/v1/utils"
|
||||||
|
"code.gitea.io/gitea/services/context"
|
||||||
|
"code.gitea.io/gitea/services/convert"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SearchAuth API for getting information of the configured authentication methods according the filter conditions
|
||||||
|
func SearchAuth(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /admin/identity-auth admin adminSearchAuth
|
||||||
|
// ---
|
||||||
|
// summary: Search authentication sources
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: page
|
||||||
|
// in: query
|
||||||
|
// description: page number of results to return (1-based)
|
||||||
|
// type: integer
|
||||||
|
// - name: limit
|
||||||
|
// in: query
|
||||||
|
// description: page size of results
|
||||||
|
// type: integer
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// description: "SearchResults of authentication sources"
|
||||||
|
// schema:
|
||||||
|
// type: array
|
||||||
|
// items:
|
||||||
|
// "$ref": "#/definitions/AuthOauth2Option"
|
||||||
|
// "403":
|
||||||
|
// "$ref": "#/responses/forbidden"
|
||||||
|
|
||||||
|
listOptions := utils.GetListOptions(ctx)
|
||||||
|
|
||||||
|
authSources, maxResults, err := db.FindAndCount[auth_model.Source](ctx, auth_model.FindSourcesOptions{})
|
||||||
|
if err != nil {
|
||||||
|
ctx.APIErrorInternal(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
results := make([]*api.AuthSourceOption, len(authSources))
|
||||||
|
for i := range authSources {
|
||||||
|
results[i] = convert.ToOauthProvider(ctx, authSources[i])
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.SetLinkHeader(int(maxResults), listOptions.PageSize)
|
||||||
|
ctx.SetTotalCountHeader(maxResults)
|
||||||
|
ctx.JSON(http.StatusOK, &results)
|
||||||
|
}
|
@ -251,13 +251,15 @@ func SearchOauthAuth(ctx *context.APIContext) {
|
|||||||
|
|
||||||
listOptions := utils.GetListOptions(ctx)
|
listOptions := utils.GetListOptions(ctx)
|
||||||
|
|
||||||
authSources, maxResults, err := db.FindAndCount[auth_model.Source](ctx, auth_model.FindSourcesOptions{})
|
authSources, maxResults, err := db.FindAndCount[auth_model.Source](ctx, auth_model.FindSourcesOptions{
|
||||||
|
LoginType: auth_model.OAuth2,
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.APIErrorInternal(err)
|
ctx.APIErrorInternal(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
results := make([]*api.AuthOauth2Option, len(authSources))
|
results := make([]*api.AuthSourceOption, len(authSources))
|
||||||
for i := range authSources {
|
for i := range authSources {
|
||||||
results[i] = convert.ToOauthProvider(ctx, authSources[i])
|
results[i] = convert.ToOauthProvider(ctx, authSources[i])
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// ToOauthProvider convert auth_model.Source≤ to api.AuthOauth2Option
|
// ToOauthProvider convert auth_model.Source≤ to api.AuthOauth2Option
|
||||||
func ToOauthProvider(ctx context.Context, provider *auth_model.Source) *api.AuthOauth2Option {
|
func ToOauthProvider(ctx context.Context, provider *auth_model.Source) *api.AuthSourceOption {
|
||||||
if provider == nil {
|
if provider == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -20,16 +20,16 @@ func ToOauthProvider(ctx context.Context, provider *auth_model.Source) *api.Auth
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ToOauthProviders convert list of auth_model.Source to list of api.AuthOauth2Option
|
// ToOauthProviders convert list of auth_model.Source to list of api.AuthOauth2Option
|
||||||
func ToOauthProviders(ctx context.Context, provider []*auth_model.Source) []*api.AuthOauth2Option {
|
func ToOauthProviders(ctx context.Context, provider []*auth_model.Source) []*api.AuthSourceOption {
|
||||||
result := make([]*api.AuthOauth2Option, len(provider))
|
result := make([]*api.AuthSourceOption, len(provider))
|
||||||
for i := range provider {
|
for i := range provider {
|
||||||
result[i] = ToOauthProvider(ctx, provider[i])
|
result[i] = ToOauthProvider(ctx, provider[i])
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
func toOauthProvider(provider *auth_model.Source) *api.AuthOauth2Option {
|
func toOauthProvider(provider *auth_model.Source) *api.AuthSourceOption {
|
||||||
return &api.AuthOauth2Option{
|
return &api.AuthSourceOption{
|
||||||
ID: provider.ID,
|
ID: provider.ID,
|
||||||
AuthenticationName: provider.Name,
|
AuthenticationName: provider.Name,
|
||||||
TypeName: provider.Type.String(),
|
TypeName: provider.Type.String(),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user