AP stuff almost works
Some checks are pending
/ test (push) Waiting to run

This commit is contained in:
Melody Becker 2025-04-09 17:35:31 +02:00
parent 98191fd098
commit d272fa90b4
Signed by: mstar
SSH key fingerprint: SHA256:9VAo09aaVNTWKzPW7Hq2LW+ox9OdwmTSHRoD4mlz1yI
20 changed files with 574 additions and 27 deletions

View file

@ -1,8 +1,9 @@
package storage
import (
"crypto/ed25519"
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"database/sql"
"git.mstar.dev/mstar/goutils/other"
@ -102,7 +103,16 @@ func insertUser(server *models.RemoteServer) (*models.User, error) {
if err != gorm.ErrRecordNotFound {
return nil, err
}
publicKey, privateKey, err := ed25519.GenerateKey(nil)
// publicKey, privateKey, err := ed25519.GenerateKey(nil)
privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
if err != nil {
return nil, err
}
if err = privateKey.Validate(); err != nil {
return nil, err
}
privateKeyBytes := x509.MarshalPKCS1PrivateKey(privateKey)
publicKeyBytes := x509.MarshalPKCS1PublicKey(&privateKey.PublicKey)
pkeyId := make([]byte, 64)
_, err = rand.Read(pkeyId)
if err != nil {
@ -126,8 +136,8 @@ func insertUser(server *models.RemoteServer) (*models.User, error) {
Banner: nil,
BannerId: sql.NullString{Valid: false},
Indexable: false,
PublicKey: publicKey,
PrivateKey: privateKey,
PublicKey: publicKeyBytes,
PrivateKey: privateKeyBytes,
Verified: true,
FinishedRegistration: true,
PasskeyId: pkeyId,
@ -155,11 +165,21 @@ func insertUserPronoun(user *models.User) error {
}
func attachUserToRole(user *models.User) error {
u2r := models.UserToRole{
User: *user,
UserId: user.ID,
Role: models.FullAdminRole,
RoleId: models.FullAdminRole.ID,
_, err := dbgen.UserToRole.Where(dbgen.UserToRole.UserId.Eq(user.ID)).
Where(dbgen.UserToRole.RoleId.Eq(models.FullAdminRole.ID)).
First()
switch err {
case nil:
return nil
case gorm.ErrRecordNotFound:
u2r := models.UserToRole{
User: *user,
UserId: user.ID,
Role: models.FullAdminRole,
RoleId: models.FullAdminRole.ID,
}
return dbgen.UserToRole.Save(&u2r)
default:
return err
}
return dbgen.UserToRole.Save(&u2r)
}