mirror of
https://github.com/go-gitea/gitea.git
synced 2026-08-28 21:30:06 +00:00
feat: add deploy tokens (#37306)
Deploy keys only work over SSH. A deploy token is their counterpart for HTTPS: a repository scoped credential, used as the password of a Git request, with read or read and write access. It covers Git operations and LFS, and can be regenerated in place. Signed-off-by: silverwind <me@silverwind.io> Co-authored-by: Claude Mythos <noreply@anthropic.com> Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: bircni <bircni@icloud.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
+13
-10
@@ -20,6 +20,7 @@ import (
|
||||
asymkey_model "gitea.dev/models/asymkey"
|
||||
"gitea.dev/models/auth"
|
||||
"gitea.dev/models/db"
|
||||
deploykey_model "gitea.dev/models/deploykey"
|
||||
git_model "gitea.dev/models/git"
|
||||
issues_model "gitea.dev/models/issues"
|
||||
"gitea.dev/models/organization"
|
||||
@@ -846,19 +847,21 @@ func ToGitHook(h *git.Hook) *api.GitHook {
|
||||
}
|
||||
}
|
||||
|
||||
// ToDeployKey convert asymkey_model.DeployKey to api.DeployKey
|
||||
func ToDeployKey(ctx context.Context, repo *repo_model.Repository, deployKey *asymkey_model.DeployKey) *api.DeployKey {
|
||||
// ToDeployKey convert deploykey_model.DeployKey to api.DeployKey
|
||||
func ToDeployKey(ctx context.Context, repo *repo_model.Repository, deployKey *deploykey_model.DeployKey) *api.DeployKey {
|
||||
k := &api.DeployKey{
|
||||
ID: deployKey.ID,
|
||||
KeyID: deployKey.KeyID,
|
||||
URL: repo.APIURL(ctx) + fmt.Sprintf("/keys/%d", deployKey.ID),
|
||||
Title: deployKey.Name,
|
||||
Created: deployKey.CreatedUnix.AsTime(),
|
||||
ReadOnly: deployKey.Mode == perm.AccessModeRead, // All deploy keys are read-only.
|
||||
ID: deployKey.ID,
|
||||
KeyType: util.Iif(deployKey.KeyType == deploykey_model.KeyTypeSSH, "ssh", "token"),
|
||||
KeyID: deployKey.KeyID,
|
||||
Token: deployKey.Token,
|
||||
URL: repo.APIURL(ctx) + fmt.Sprintf("/keys/%d", deployKey.ID),
|
||||
Title: deployKey.Name,
|
||||
Fingerprint: deployKey.Fingerprint,
|
||||
Created: deployKey.CreatedUnix.AsTime(),
|
||||
ReadOnly: deployKey.IsReadOnly(),
|
||||
}
|
||||
if err := deployKey.LoadPublicKey(ctx); err == nil {
|
||||
if deployKey.KeyType == deploykey_model.KeyTypeSSH && deployKey.LoadPublicKey(ctx) == nil {
|
||||
k.Key = deployKey.PublicKey.Content
|
||||
k.Fingerprint = deployKey.PublicKey.Fingerprint
|
||||
}
|
||||
return k
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user