2022-10-09 14:07:41 +02:00
// Copyright 2022 The Gitea Authors. All rights reserved.
2022-11-27 13:20:29 -05:00
// SPDX-License-Identifier: MIT
2022-10-09 14:07:41 +02:00
package org
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-09 14:07:41 +02:00
"code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/setting"
2023-09-06 10:49:36 +02:00
shared_user "code.gitea.io/gitea/routers/web/shared/user"
2022-10-09 14:07:41 +02:00
user_setting "code.gitea.io/gitea/routers/web/user/setting"
)
const (
tplSettingsApplications base . TplName = "org/settings/applications"
tplSettingsOAuthApplicationEdit base . TplName = "org/settings/applications_oauth2_edit"
)
func newOAuth2CommonHandlers ( org * context . Organization ) * user_setting . OAuth2CommonHandlers {
return & user_setting . OAuth2CommonHandlers {
OwnerID : org . Organization . ID ,
BasePathList : fmt . Sprintf ( "%s/org/%s/settings/applications" , setting . AppSubURL , org . Organization . Name ) ,
BasePathEditPrefix : fmt . Sprintf ( "%s/org/%s/settings/applications/oauth2" , setting . AppSubURL , org . Organization . Name ) ,
TplAppEdit : tplSettingsOAuthApplicationEdit ,
}
}
// 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 [ "PageIsOrgSettings" ] = true
ctx . Data [ "PageIsSettingsApplications" ] = true
2023-11-24 11:49:41 +08:00
apps , err := db . Find [ auth . OAuth2Application ] ( ctx , auth . FindOAuth2ApplicationsOptions {
OwnerID : ctx . Org . Organization . ID ,
} )
2022-10-09 14:07:41 +02:00
if err != nil {
ctx . ServerError ( "GetOAuth2ApplicationsByUserID" , err )
return
}
ctx . Data [ "Applications" ] = apps
2023-09-06 10:49:36 +02:00
err = shared_user . LoadHeaderCount ( ctx )
if err != nil {
ctx . ServerError ( "LoadHeaderCount" , err )
return
}
2022-10-09 14:07:41 +02:00
ctx . HTML ( http . StatusOK , tplSettingsApplications )
}
// OAuthApplicationsPost response for adding an oauth2 application
func OAuthApplicationsPost ( ctx * context . Context ) {
ctx . Data [ "Title" ] = ctx . Tr ( "settings.applications" )
ctx . Data [ "PageIsOrgSettings" ] = true
ctx . Data [ "PageIsSettingsApplications" ] = true
oa := newOAuth2CommonHandlers ( ctx . Org )
oa . AddApp ( ctx )
}
// OAuth2ApplicationShow displays the given application
func OAuth2ApplicationShow ( ctx * context . Context ) {
ctx . Data [ "PageIsOrgSettings" ] = true
ctx . Data [ "PageIsSettingsApplications" ] = true
oa := newOAuth2CommonHandlers ( ctx . Org )
oa . EditShow ( ctx )
}
// OAuth2ApplicationEdit response for editing oauth2 application
func OAuth2ApplicationEdit ( ctx * context . Context ) {
ctx . Data [ "Title" ] = ctx . Tr ( "settings.applications" )
ctx . Data [ "PageIsOrgSettings" ] = true
ctx . Data [ "PageIsSettingsApplications" ] = true
oa := newOAuth2CommonHandlers ( ctx . Org )
oa . EditSave ( ctx )
}
// OAuthApplicationsRegenerateSecret handles the post request for regenerating the secret
func OAuthApplicationsRegenerateSecret ( ctx * context . Context ) {
ctx . Data [ "Title" ] = ctx . Tr ( "settings" )
ctx . Data [ "PageIsOrgSettings" ] = true
ctx . Data [ "PageIsSettingsApplications" ] = true
oa := newOAuth2CommonHandlers ( ctx . Org )
oa . RegenerateSecret ( ctx )
}
// DeleteOAuth2Application deletes the given oauth2 application
func DeleteOAuth2Application ( ctx * context . Context ) {
oa := newOAuth2CommonHandlers ( ctx . Org )
oa . DeleteApp ( ctx )
}
// TODO: revokes the grant with the given id