code.gitea.io/gitea@v1.22.3/routers/web/admin/applications.go (about)

     1  // Copyright 2022 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package admin
     5  
     6  import (
     7  	"fmt"
     8  	"net/http"
     9  
    10  	"code.gitea.io/gitea/models/auth"
    11  	"code.gitea.io/gitea/models/db"
    12  	"code.gitea.io/gitea/modules/base"
    13  	"code.gitea.io/gitea/modules/setting"
    14  	user_setting "code.gitea.io/gitea/routers/web/user/setting"
    15  	"code.gitea.io/gitea/services/context"
    16  )
    17  
    18  var (
    19  	tplSettingsApplications          base.TplName = "admin/applications/list"
    20  	tplSettingsOauth2ApplicationEdit base.TplName = "admin/applications/oauth2_edit"
    21  )
    22  
    23  func newOAuth2CommonHandlers() *user_setting.OAuth2CommonHandlers {
    24  	return &user_setting.OAuth2CommonHandlers{
    25  		OwnerID:            0,
    26  		BasePathList:       fmt.Sprintf("%s/admin/applications", setting.AppSubURL),
    27  		BasePathEditPrefix: fmt.Sprintf("%s/admin/applications/oauth2", setting.AppSubURL),
    28  		TplAppEdit:         tplSettingsOauth2ApplicationEdit,
    29  	}
    30  }
    31  
    32  // Applications render org applications page (for org, at the moment, there are only OAuth2 applications)
    33  func Applications(ctx *context.Context) {
    34  	ctx.Data["Title"] = ctx.Tr("settings.applications")
    35  	ctx.Data["PageIsAdminApplications"] = true
    36  
    37  	apps, err := db.Find[auth.OAuth2Application](ctx, auth.FindOAuth2ApplicationsOptions{
    38  		IsGlobal: true,
    39  	})
    40  	if err != nil {
    41  		ctx.ServerError("GetOAuth2ApplicationsByUserID", err)
    42  		return
    43  	}
    44  	ctx.Data["Applications"] = apps
    45  	ctx.Data["BuiltinApplications"] = auth.BuiltinApplications()
    46  	ctx.HTML(http.StatusOK, tplSettingsApplications)
    47  }
    48  
    49  // ApplicationsPost response for adding an oauth2 application
    50  func ApplicationsPost(ctx *context.Context) {
    51  	ctx.Data["Title"] = ctx.Tr("settings.applications")
    52  	ctx.Data["PageIsAdminApplications"] = true
    53  
    54  	oa := newOAuth2CommonHandlers()
    55  	oa.AddApp(ctx)
    56  }
    57  
    58  // EditApplication displays the given application
    59  func EditApplication(ctx *context.Context) {
    60  	ctx.Data["PageIsAdminApplications"] = true
    61  
    62  	oa := newOAuth2CommonHandlers()
    63  	oa.EditShow(ctx)
    64  }
    65  
    66  // EditApplicationPost response for editing oauth2 application
    67  func EditApplicationPost(ctx *context.Context) {
    68  	ctx.Data["Title"] = ctx.Tr("settings.applications")
    69  	ctx.Data["PageIsAdminApplications"] = true
    70  
    71  	oa := newOAuth2CommonHandlers()
    72  	oa.EditSave(ctx)
    73  }
    74  
    75  // ApplicationsRegenerateSecret handles the post request for regenerating the secret
    76  func ApplicationsRegenerateSecret(ctx *context.Context) {
    77  	ctx.Data["Title"] = ctx.Tr("settings")
    78  	ctx.Data["PageIsAdminApplications"] = true
    79  
    80  	oa := newOAuth2CommonHandlers()
    81  	oa.RegenerateSecret(ctx)
    82  }
    83  
    84  // DeleteApplication deletes the given oauth2 application
    85  func DeleteApplication(ctx *context.Context) {
    86  	oa := newOAuth2CommonHandlers()
    87  	oa.DeleteApp(ctx)
    88  }
    89  
    90  // TODO: revokes the grant with the given id