|
@@ -1,4 +1,4 @@
|
|
-package accountrecovery
|
|
|
|
|
|
+package two_factor_recovery
|
|
|
|
|
|
import (
|
|
import (
|
|
"context"
|
|
"context"
|
|
@@ -11,35 +11,36 @@ type Repository struct {
|
|
Db *sql.DB
|
|
Db *sql.DB
|
|
}
|
|
}
|
|
|
|
|
|
-// GetAccountRecoveryStatus returns `ente.AccountRecoveryStatus` for a user
|
|
|
|
-func (r *Repository) GetAccountRecoveryStatus(userID int64) (*ente.AccountRecoveryStatus, error) {
|
|
|
|
|
|
+// GetStatus returns `ente.TwoFactorRecoveryStatus` for a user
|
|
|
|
+func (r *Repository) GetStatus(userID int64) (*ente.TwoFactorRecoveryStatus, error) {
|
|
var isAdminResetEnabled bool
|
|
var isAdminResetEnabled bool
|
|
var resetKey sql.NullString
|
|
var resetKey sql.NullString
|
|
- row := r.Db.QueryRow("SELECT enable_admin_mfa_reset, pass_key_reset_key FROM account_recovery WHERE user_id = $1", userID)
|
|
|
|
|
|
+ row := r.Db.QueryRow("SELECT enable_admin_mfa_reset, pass_key_reset_key FROM two_factor_recovery WHERE user_id = $1", userID)
|
|
err := row.Scan(&isAdminResetEnabled, &resetKey)
|
|
err := row.Scan(&isAdminResetEnabled, &resetKey)
|
|
if err != nil {
|
|
if err != nil {
|
|
if err == sql.ErrNoRows {
|
|
if err == sql.ErrNoRows {
|
|
// by default, admin
|
|
// by default, admin
|
|
- return &ente.AccountRecoveryStatus{
|
|
|
|
|
|
+ return &ente.TwoFactorRecoveryStatus{
|
|
AllowAdminReset: true,
|
|
AllowAdminReset: true,
|
|
IsPassKeySkipEnabled: false,
|
|
IsPassKeySkipEnabled: false,
|
|
}, nil
|
|
}, nil
|
|
}
|
|
}
|
|
return nil, err
|
|
return nil, err
|
|
}
|
|
}
|
|
- return &ente.AccountRecoveryStatus{AllowAdminReset: isAdminResetEnabled, IsPassKeySkipEnabled: resetKey.Valid}, nil
|
|
|
|
|
|
+ return &ente.TwoFactorRecoveryStatus{AllowAdminReset: isAdminResetEnabled, IsPassKeySkipEnabled: resetKey.Valid}, nil
|
|
}
|
|
}
|
|
|
|
|
|
func (r *Repository) ConfigurePassKeyRecovery(ctx context.Context, userID int64, req *ente.ConfigurePassKeySkipRequest) error {
|
|
func (r *Repository) ConfigurePassKeyRecovery(ctx context.Context, userID int64, req *ente.ConfigurePassKeySkipRequest) error {
|
|
- _, err := r.Db.ExecContext(ctx, `INSERT INTO account_recovery (user_id, pass_key_reset_key, pass_key_reset_enc_data)
|
|
|
|
|
|
+ _, err := r.Db.ExecContext(ctx, `INSERT INTO two_factor_recovery (user_id, pass_key_reset_key, pass_key_reset_enc_data)
|
|
VALUES ($1, $2,$3) ON CONFLICT (user_id)
|
|
VALUES ($1, $2,$3) ON CONFLICT (user_id)
|
|
- DO UPDATE SET pass_key_reset_key = $2, pass_key_reset_enc_data = $3`, userID, req.PassKeySkipKey, req.EncPassKeySkipSecret)
|
|
|
|
|
|
+ DO UPDATE SET pass_key_reset_key = $2, pass_key_reset_enc_data = $3`, userID, req.PassKeySkipSecret,
|
|
|
|
+ req.EncPassKeySkipSecret)
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
func (r *Repository) GetPasskeyResetChallenge(ctx context.Context, userID int64) (*ente.EncData, error) {
|
|
func (r *Repository) GetPasskeyResetChallenge(ctx context.Context, userID int64) (*ente.EncData, error) {
|
|
var encData *ente.EncData
|
|
var encData *ente.EncData
|
|
- err := r.Db.QueryRowContext(ctx, "SELECT pass_key_reset_enc_data FROM account_recovery WHERE user_id= $1", userID).Scan(encData)
|
|
|
|
|
|
+ err := r.Db.QueryRowContext(ctx, "SELECT pass_key_reset_enc_data FROM two_factor_recovery WHERE user_id= $1", userID).Scan(encData)
|
|
if err != nil {
|
|
if err != nil {
|
|
return nil, err
|
|
return nil, err
|
|
}
|
|
}
|
|
@@ -49,7 +50,7 @@ func (r *Repository) GetPasskeyResetChallenge(ctx context.Context, userID int64)
|
|
// VerifyRecoveryKeyForPassKey checks if the passkey reset key is valid for a user
|
|
// VerifyRecoveryKeyForPassKey checks if the passkey reset key is valid for a user
|
|
func (r *Repository) VerifyRecoveryKeyForPassKey(userID int64, passKeyResetKey string) (bool, error) {
|
|
func (r *Repository) VerifyRecoveryKeyForPassKey(userID int64, passKeyResetKey string) (bool, error) {
|
|
var exists bool
|
|
var exists bool
|
|
- row := r.Db.QueryRow(`SELECT EXISTS( SELECT 1 FROM account_recovery WHERE user_id = $1 AND pass_key_reset_key = $2)`, userID, passKeyResetKey)
|
|
|
|
|
|
+ row := r.Db.QueryRow(`SELECT EXISTS( SELECT 1 FROM two_factor_recovery WHERE user_id = $1 AND pass_key_reset_key = $2)`, userID, passKeyResetKey)
|
|
err := row.Scan(&exists)
|
|
err := row.Scan(&exists)
|
|
if err != nil {
|
|
if err != nil {
|
|
return false, stacktrace.Propagate(err, "")
|
|
return false, stacktrace.Propagate(err, "")
|