MCPcopy Create free account
hub / github.com/gogs/gogs / AddPublicKey

Function AddPublicKey

internal/database/ssh_key.go:400–432  ·  view source on GitHub ↗

AddPublicKey adds new public key to database and authorized_keys file.

(ownerID int64, name, content string)

Source from the content-addressed store, hash-verified

398
399// AddPublicKey adds new public key to database and authorized_keys file.
400func AddPublicKey(ownerID int64, name, content string) (*PublicKey, error) {
401 log.Trace("Add public key: %s", content)
402 if err := checkKeyContent(content); err != nil {
403 return nil, err
404 }
405
406 // Key name of same user cannot be duplicated.
407 has, err := x.Where("owner_id = ? AND name = ?", ownerID, name).Get(new(PublicKey))
408 if err != nil {
409 return nil, err
410 } else if has {
411 return nil, ErrKeyNameAlreadyUsed{ownerID, name}
412 }
413
414 sess := x.NewSession()
415 defer sess.Close()
416 if err = sess.Begin(); err != nil {
417 return nil, err
418 }
419
420 key := &PublicKey{
421 OwnerID: ownerID,
422 Name: name,
423 Content: content,
424 Mode: AccessModeWrite,
425 Type: KeyTypeUser,
426 }
427 if err = addKey(sess, key); err != nil {
428 return nil, errors.Newf("addKey: %v", err)
429 }
430
431 return key, sess.Commit()
432}
433
434// GetPublicKeyByID returns public key by given ID.
435func GetPublicKeyByID(keyID int64) (*PublicKey, error) {

Callers 2

SettingsSSHKeysPostFunction · 0.92
CreateUserPublicKeyFunction · 0.92

Calls 4

checkKeyContentFunction · 0.85
addKeyFunction · 0.85
WhereMethod · 0.80
GetMethod · 0.65

Tested by

no test coverage detected