Lightweight and easily self-hostable Git forge. git.poy.ooo
git-forge selfhosting homebrew
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152package db
import ( "errors" "farga/db/types" "farga/lib"
"github.com/google/uuid")
// Stores a user's public key in the db. Key parsed with lib.ParseKey()func (db *DB) NewPubKey(name string, pubKey lib.SSHPubKey, userID uuid.UUID) (types.SSHPubKey, error) { dbKey := types.SSHPubKey{ UserID: userID, PublicKey: pubKey.Key, Fingerprint: pubKey.Fingerprint, Algorithm: pubKey.Algorithm, Name: name, }
if err := db.Create(&dbKey).Error; err != nil { if err.Error() == "UNIQUE constraint failed: ssh_pub_keys.fingerprint" { err = errors.New("SSH Key already exists.") } return types.SSHPubKey{}, err }
return dbKey, nil}
// Deletes a public key given it's UUID and the owner's UUIDfunc (db *DB) DeletePubKey(keyID uuid.UUID, userID uuid.UUID) error { return db.Delete(&types.SSHPubKey{ UUID_ID: types.UUID_ID{ID: keyID}, UserID: userID, }).Error}
// the title says it all.func (db *DB) UserByFingerprint(fingerprint string) (types.User, error) { key := types.SSHPubKey{Fingerprint: fingerprint} err := db.Where(&key).First(&key).Error if err != nil { return types.User{}, err } user := types.User{ UUID_ID: types.UUID_ID{ID: key.UserID}, } err = db.First(&user).Error return user, err}