forgejo/.deadcode-out
Mathieu Fenniak cf087a2f12 feat: ability to edit authorized integration in web UI (#12601)
Extends the UI introduced in #12558 to have edit capabilities.  (not in scope: "Add" for a new Authorized Integration will be the next update to this UI; `create-authorized-integration` CLI is still the only way to create a new record)

This PR includes a few refactoring steps.  The goal of these steps is to have `services/auth` be a single entrypoint for validating, inserting, or updating an authorized integration.  Some logic is moved out of `services/authz` because it is not authorization related, and some is moved out of `services/auth/method` to allow it to be reused during validation without creating a cyclical module dependency.

This PR also adds comprehensive validation to the more complex fields in the authorized integration, such as the issuer and claim rules.  This validation applies to the `forgejo admin user create-authorized-integration` CLI as well.

The visible UI is the same as #12558, but with a "Save" button, and the ability to display errors:

![Screenshot 2026-05-16 at 15-43-20 Authorized Integrations - Forgejo Beyond coding. We Forge](/attachments/ffaf60e2-3652-429b-a815-b339100f05f8)

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. All work and communication must conform to Forgejo's [AI Agreement](https://codeberg.org/forgejo/governance/src/branch/main/AIAgreement.md). There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests for Go changes

- I added test coverage for Go changes...
  - [x] in their respective `*_test.go` for unit tests.
  - [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I ran...
  - [x] `make pr-go` before pushing

### Tests for JavaScript changes

- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [x] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.
    - Documentation is on my TODO list and will be completed before release.

### Release notes

- [x] This change will be noticed by a Forgejo user or admin (feature, bug fix, performance, etc.). I suggest to include a release note for this change.
- [ ] This change is not visible to a Forgejo user or admin (refactor, dependency upgrade, etc.). I think there is no need to add a release note for this change.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/12601
Reviewed-by: Andreas Ahlenstorf <aahlenst@noreply.codeberg.org>
2026-05-17 18:33:39 +02:00

249 lines
4.2 KiB
Text

forgejo.org/cmd
NoMainListener
forgejo.org/cmd/forgejo
ContextSetNoInit
ContextSetNoExit
ContextSetStderr
ContextGetStderr
ContextSetStdout
ContextSetStdin
forgejo.org/models
IsErrSHANotFound
IsErrMergeDivergingFastForwardOnly
forgejo.org/models/auth
WebAuthnCredentials
forgejo.org/models/db
TruncateBeans
TruncateBeansCascade
DumpTables
GetTableNames
extendBeansForCascade
IsErrNameActivityPubInvalid
forgejo.org/models/dbfs
file.renameTo
Create
Rename
forgejo.org/models/forgejo/semver
GetVersion
SetVersionString
SetVersion
forgejo.org/models/forgejo_migrations
resetMigrations
forgejo.org/models/git
RemoveDeletedBranchByID
forgejo.org/models/issues
IsErrUnknownDependencyType
IsErrIssueWasClosed
forgejo.org/models/organization
SearchMembersOptions.ToConds
forgejo.org/models/perm/access
GetRepoWriters
forgejo.org/models/user
IsErrUserWrongType
IsErrExternalLoginUserAlreadyExist
IsErrExternalLoginUserNotExist
NewFederatedUser
IsErrUserSettingIsNotExist
GetUserAllSettings
DeleteUserSetting
forgejo.org/modules/activitypub
NewContext
Context.APClientFactory
forgejo.org/modules/assetfs
Bindata
forgejo.org/modules/auth/password/hash
DummyHasher.HashWithSaltBytes
NewDummyHasher
forgejo.org/modules/auth/password/pwn
WithHTTP
forgejo.org/modules/base
SetupGiteaRoot
forgejo.org/modules/cache
WithNoCacheContext
RemoveContextData
forgejo.org/modules/emoji
ReplaceCodes
forgejo.org/modules/eventsource
Event.String
forgejo.org/modules/forgefed
NewForgeUndoLike
ForgeUndoLike.UnmarshalJSON
ForgeUndoLike.Validate
NewPersonIDFromModel
GetItemByType
JSONUnmarshalerFn
NotEmpty
ToRepository
OnRepository
forgejo.org/modules/git
AllowLFSFiltersArgs
AddChanges
AddChangesWithArgs
CommitChanges
CommitChangesWithArgs
IsErrMoreThanOne
SetUpdateHook
openRepositoryWithDefaultContext
ToEntryMode
forgejo.org/modules/gitrepo
GetBranchCommitID
GetWikiDefaultBranch
forgejo.org/modules/graceful
Manager.TerminateContext
Manager.Err
Manager.Value
Manager.Deadline
forgejo.org/modules/hcaptcha
WithHTTP
forgejo.org/modules/hostmatcher
HostMatchList.AppendPattern
forgejo.org/modules/json
StdJSON.Marshal
StdJSON.Unmarshal
StdJSON.NewEncoder
StdJSON.NewDecoder
StdJSON.Indent
forgejo.org/modules/log
eventWriterBuffer.Close
eventWriterBuffer.Write
eventWriterBuffer.GetString
NewEventWriterBuffer
forgejo.org/modules/markup
GetRendererByType
RenderString
IsMarkupFile
forgejo.org/modules/markup/console
Render
RenderString
forgejo.org/modules/markup/markdown
RenderRawString
forgejo.org/modules/markup/mdstripper
stripRenderer.AddOptions
StripMarkdown
forgejo.org/modules/markup/orgmode
RenderString
forgejo.org/modules/process
Manager.ExecTimeout
forgejo.org/modules/queue
newBaseChannelSimple
newBaseChannelUnique
newBaseRedisSimple
newBaseRedisUnique
testStateRecorder.Records
testStateRecorder.Reset
newWorkerPoolQueueForTest
forgejo.org/modules/queue/lqinternal
QueueItemIDBytes
QueueItemKeyBytes
ListLevelQueueKeys
forgejo.org/modules/setting
NewConfigProviderFromData
GitConfigType.GetOption
InitLoggersForTest
forgejo.org/modules/sync
StatusTable.Start
StatusTable.IsRunning
forgejo.org/modules/timeutil
GetExecutableModTime
MockSet
MockUnset
forgejo.org/modules/translation
MockLocale.Language
MockLocale.TrString
MockLocale.Tr
MockLocale.TrN
MockLocale.TrPluralString
MockLocale.TrPluralStringAllForms
MockLocale.TrSize
MockLocale.HasKey
MockLocale.PrettyNumber
forgejo.org/modules/translation/localeiter
IterateMessagesContent
forgejo.org/modules/util
OptionalArg
forgejo.org/modules/util/filebuffer
CreateFromReader
forgejo.org/modules/validation
IsErrNotValid
forgejo.org/modules/web
RouteMock
RouteMockReset
forgejo.org/modules/zstd
NewWriter
Writer.Write
Writer.Close
forgejo.org/routers/web/org
MustEnableProjects
forgejo.org/services/auth
RegisterInternalIssuerForTesting
forgejo.org/services/context
GetPrivateContext
forgejo.org/services/notify
UnregisterNotifier
forgejo.org/services/repository
IsErrForkAlreadyExist
forgejo.org/services/repository/files
ContentType.String
RepoFileOptionMode
forgejo.org/services/repository/gitgraph
Parser.Reset
forgejo.org/services/stats
Flush
forgejo.org/services/webhook
NewNotifier