forked from mirrors/forgejo
Fixes #9282 Adds a new admin panel category for federation related administration. Includes views for: - Instance Federation Configuration - List of Federation Hosts - (Per-Instance) List of Federated Users Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/11115 Reviewed-by: elle <0xllx0@noreply.codeberg.org> Reviewed-by: Panagiotis "Ivory" Vasilopoulos <git@n0toose.net> Reviewed-by: Gusted <gusted@noreply.codeberg.org> Co-authored-by: Florian Pallas <mail@fpallas.com> Co-committed-by: Florian Pallas <mail@fpallas.com>
65 lines
1.6 KiB
Go
65 lines
1.6 KiB
Go
// Copyright 2026 The Forgejo Authors. All rights reserved.
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
package admin
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"forgejo.org/models/db"
|
|
"forgejo.org/models/forgefed"
|
|
user_model "forgejo.org/models/user"
|
|
"forgejo.org/modules/base"
|
|
"forgejo.org/modules/setting"
|
|
"forgejo.org/services/context"
|
|
)
|
|
|
|
const (
|
|
tplFederationHost base.TplName = "admin/federation/host"
|
|
)
|
|
|
|
func FederationHost(ctx *context.Context) {
|
|
federationHostID := ctx.ParamsInt64("id")
|
|
page := ctx.FormInt("page")
|
|
if page < 1 {
|
|
page = 1
|
|
}
|
|
|
|
host, err := forgefed.GetFederationHost(ctx, federationHostID)
|
|
if err != nil {
|
|
ctx.ServerError("GetFederationHost", err)
|
|
return
|
|
}
|
|
|
|
users, err := user_model.FindFederatedUsersByHostID(ctx, federationHostID, db.ListOptions{
|
|
PageSize: setting.UI.Admin.FederationUserPagingNum,
|
|
Page: int(page),
|
|
})
|
|
if err != nil {
|
|
ctx.ServerError("FindFederatedUsersByHostID", err)
|
|
return
|
|
}
|
|
|
|
total, err := user_model.CountFederatedUsersByHostID(ctx, federationHostID)
|
|
if err != nil {
|
|
ctx.ServerError("CountFederatedUsersByHostID", err)
|
|
return
|
|
}
|
|
|
|
ctx.Data["Host"] = host
|
|
ctx.Data["Users"] = users
|
|
ctx.Data["UsersTotal"] = int(total)
|
|
ctx.Data["Title"] = ctx.Tr("admin.federation.hosts.details_panel")
|
|
ctx.Data["PageIsAdminFederationHosts"] = true
|
|
|
|
numPages := 0
|
|
if total > 0 {
|
|
numPages = (int(total) - 1/setting.UI.Admin.FederationUserPagingNum)
|
|
}
|
|
|
|
pager := context.NewPagination(int(total), setting.UI.Admin.FederationUserPagingNum, page, numPages)
|
|
pager.SetDefaultParams(ctx)
|
|
ctx.Data["Page"] = pager
|
|
|
|
ctx.HTML(http.StatusOK, tplFederationHost)
|
|
}
|