Files
mstore/app/maindb/init.go
T
2026-02-20 15:33:15 +02:00

184 lines
3.9 KiB
Go

/*
* Copyright 2026 Oleg Borodin <onborodin@gmail.com>
*
* This work is published and licensed under a Creative Commons
* Attribution-NonCommercial-NoDerivatives 4.0 International License.
*
* Distribution of this work is permitted, but commercial use and
* modifications are strictly prohibited.
*/
package maindb
import (
"context"
"mstore/pkg/auxpwd"
"mstore/pkg/auxtool"
"mstore/pkg/descr"
"mstore/pkg/term"
"mstore/pkg/uuid"
)
func (db *Database) WriteAnonymous(ctx context.Context) error {
var err error
now := auxtool.TimeNow()
password := auxtool.RandomString(64)
passhash := auxpwd.MakeSHA256Hash([]byte(password))
accountDescr := &descr.Account{
ID: term.AnonymousID,
Username: term.AnonimousUsername,
Passhash: passhash,
Disabled: false,
CreatedAt: now,
UpdatedAt: now,
CreatedBy: term.ServerID,
UpdatedBy: term.ServerID,
}
err = db.InsertAccount(ctx, accountDescr)
if err != nil {
return err
}
grantDescr := &descr.Grant{
ID: uuid.NewUUID(),
AccountID: accountDescr.ID,
Right: term.RightReadFiles,
Pattern: ".*",
CreatedAt: now,
UpdatedAt: now,
CreatedBy: term.ServerID,
UpdatedBy: term.ServerID,
}
err = db.InsertGrant(ctx, grantDescr)
if err != nil {
return err
}
grantDescr = &descr.Grant{
ID: uuid.NewUUID(),
AccountID: accountDescr.ID,
Right: term.RightReadImages,
Pattern: ".*",
CreatedAt: now,
UpdatedAt: now,
CreatedBy: term.ServerID,
UpdatedBy: term.ServerID,
}
err = db.InsertGrant(ctx, grantDescr)
if err != nil {
return err
}
return err
}
func (db *Database) WriteInituser(ctx context.Context) error {
var err error
now := auxtool.TimeNow()
passhash := auxpwd.MakeSHA256Hash([]byte(term.InitUsername))
accountDescr := &descr.Account{
ID: term.InitID,
Username: term.InitUsername,
Passhash: passhash,
Disabled: false,
CreatedAt: now,
UpdatedAt: now,
CreatedBy: term.ServerID,
UpdatedBy: term.ServerID,
}
err = db.InsertAccount(ctx, accountDescr)
if err != nil {
return err
}
// Files
grantDescr := &descr.Grant{
ID: uuid.NewUUID(),
AccountID: accountDescr.ID,
Right: term.RightReadFiles,
Pattern: ".*",
CreatedAt: now,
UpdatedAt: now,
CreatedBy: term.ServerID,
UpdatedBy: term.ServerID,
}
err = db.InsertGrant(ctx, grantDescr)
if err != nil {
return err
}
grantDescr = &descr.Grant{
ID: uuid.NewUUID(),
AccountID: accountDescr.ID,
Right: term.RightWriteFiles,
Pattern: ".*",
CreatedAt: now,
UpdatedAt: now,
CreatedBy: term.ServerID,
UpdatedBy: term.ServerID,
}
err = db.InsertGrant(ctx, grantDescr)
if err != nil {
return err
}
// Accounts
grantDescr = &descr.Grant{
ID: uuid.NewUUID(),
AccountID: accountDescr.ID,
Right: term.RightReadAccounts,
Pattern: ".*",
CreatedAt: now,
UpdatedAt: now,
CreatedBy: term.ServerID,
UpdatedBy: term.ServerID,
}
err = db.InsertGrant(ctx, grantDescr)
if err != nil {
return err
}
grantDescr = &descr.Grant{
ID: uuid.NewUUID(),
AccountID: accountDescr.ID,
Right: term.RightWriteAccounts,
Pattern: ".*",
CreatedAt: now,
UpdatedAt: now,
CreatedBy: term.ServerID,
UpdatedBy: term.ServerID,
}
err = db.InsertGrant(ctx, grantDescr)
if err != nil {
return err
}
// Images
grantDescr = &descr.Grant{
ID: uuid.NewUUID(),
AccountID: accountDescr.ID,
Right: term.RightReadImages,
Pattern: ".*",
CreatedAt: now,
UpdatedAt: now,
CreatedBy: term.ServerID,
UpdatedBy: term.ServerID,
}
err = db.InsertGrant(ctx, grantDescr)
if err != nil {
return err
}
grantDescr = &descr.Grant{
ID: uuid.NewUUID(),
AccountID: accountDescr.ID,
Right: term.RightWriteImages,
Pattern: ".*",
CreatedAt: now,
UpdatedAt: now,
CreatedBy: term.ServerID,
UpdatedBy: term.ServerID,
}
err = db.InsertGrant(ctx, grantDescr)
if err != nil {
return err
}
return err
}