2022-10-12 16:08:29 +02:00
// Copyright 2022 The Gitea Authors. All rights reserved.
2022-11-27 13:20:29 -05:00
// SPDX-License-Identifier: MIT
2022-10-12 16:08:29 +02:00
package admin
import (
"fmt"
"net/http"
"code.gitea.io/gitea/models/auth"
2023-11-24 11:49:41 +08:00
"code.gitea.io/gitea/models/db"
2022-10-12 16:08:29 +02:00
"code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/setting"
user_setting "code.gitea.io/gitea/routers/web/user/setting"
2024-02-27 15:12:22 +08:00
"code.gitea.io/gitea/services/context"
2022-10-12 16:08:29 +02:00
)
var (
tplSettingsApplications base . TplName = "admin/applications/list"
tplSettingsOauth2ApplicationEdit base . TplName = "admin/applications/oauth2_edit"
)
func newOAuth2CommonHandlers ( ) * user_setting . OAuth2CommonHandlers {
return & user_setting . OAuth2CommonHandlers {
OwnerID : 0 ,
BasePathList : fmt . Sprintf ( "%s/admin/applications" , setting . AppSubURL ) ,
BasePathEditPrefix : fmt . Sprintf ( "%s/admin/applications/oauth2" , setting . AppSubURL ) ,
TplAppEdit : tplSettingsOauth2ApplicationEdit ,
}
}
// Applications render org applications page (for org, at the moment, there are only OAuth2 applications)
func Applications ( ctx * context . Context ) {
ctx . Data [ "Title" ] = ctx . Tr ( "settings.applications" )
ctx . Data [ "PageIsAdminApplications" ] = true
2023-11-24 11:49:41 +08:00
apps , err := db . Find [ auth . OAuth2Application ] ( ctx , auth . FindOAuth2ApplicationsOptions {
IsGlobal : true ,
} )
2022-10-12 16:08:29 +02:00
if err != nil {
ctx . ServerError ( "GetOAuth2ApplicationsByUserID" , err )
return
}
ctx . Data [ "Applications" ] = apps
2023-08-09 14:24:07 +02:00
ctx . Data [ "BuiltinApplications" ] = auth . BuiltinApplications ( )
2022-10-12 16:08:29 +02:00
ctx . HTML ( http . StatusOK , tplSettingsApplications )
}
// ApplicationsPost response for adding an oauth2 application
func ApplicationsPost ( ctx * context . Context ) {
ctx . Data [ "Title" ] = ctx . Tr ( "settings.applications" )
ctx . Data [ "PageIsAdminApplications" ] = true
oa := newOAuth2CommonHandlers ( )
oa . AddApp ( ctx )
}
// EditApplication displays the given application
func EditApplication ( ctx * context . Context ) {
ctx . Data [ "PageIsAdminApplications" ] = true
oa := newOAuth2CommonHandlers ( )
oa . EditShow ( ctx )
}
// EditApplicationPost response for editing oauth2 application
func EditApplicationPost ( ctx * context . Context ) {
ctx . Data [ "Title" ] = ctx . Tr ( "settings.applications" )
ctx . Data [ "PageIsAdminApplications" ] = true
oa := newOAuth2CommonHandlers ( )
oa . EditSave ( ctx )
}
// ApplicationsRegenerateSecret handles the post request for regenerating the secret
func ApplicationsRegenerateSecret ( ctx * context . Context ) {
ctx . Data [ "Title" ] = ctx . Tr ( "settings" )
ctx . Data [ "PageIsAdminApplications" ] = true
oa := newOAuth2CommonHandlers ( )
oa . RegenerateSecret ( ctx )
}
// DeleteApplication deletes the given oauth2 application
func DeleteApplication ( ctx * context . Context ) {
oa := newOAuth2CommonHandlers ( )
oa . DeleteApp ( ctx )
}
// TODO: revokes the grant with the given id