satellite/{payment,console} add legal hold user status
This change introduces a new user status, LegalHold to be used to pause an account while it is under legal review. It also modifies the condition whether to generate invoices for a user to apply to this new status. Issue: storj/storj-private#492 Change-Id: Idc9a6166cc96178a95e45cf7c0f2e982631ca021
This commit is contained in:
parent
76594466ef
commit
98234e76b7
@ -168,6 +168,8 @@ const (
|
||||
Deleted UserStatus = 2
|
||||
// PendingDeletion is a user status that he receives before deleting account.
|
||||
PendingDeletion UserStatus = 3
|
||||
// LegalHold is a user status that he receives for legal reasons.
|
||||
LegalHold UserStatus = 4
|
||||
)
|
||||
|
||||
// User is a database object that describes User entity.
|
||||
|
@ -1294,13 +1294,13 @@ func (service *Service) payInvoicesWithTokenBalance(ctx context.Context, cusID s
|
||||
return errGrp.Err()
|
||||
}
|
||||
|
||||
// isUserInactive checks whether a user has a status of console.Deleted or console.PendingDeletion.
|
||||
// isUserInactive checks whether a user does not have a status of console.Active.
|
||||
func (service *Service) isUserInactive(ctx context.Context, userID uuid.UUID) (bool, error) {
|
||||
user, err := service.usersDB.Get(ctx, userID)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
return user.Status == console.Deleted || user.Status == console.PendingDeletion, nil
|
||||
return user.Status != console.Active, nil
|
||||
}
|
||||
|
||||
// projectUsagePrice represents pricing for project usage.
|
||||
|
@ -357,6 +357,7 @@ func TestService_BalanceInvoiceItems(t *testing.T) {
|
||||
// Deactivate the users and give them balances
|
||||
statusPending := console.PendingDeletion
|
||||
statusDeleted := console.Deleted
|
||||
statusLegalHold := console.LegalHold
|
||||
for i, user := range users {
|
||||
cusID, err = satellite.DB.StripeCoinPayments().Customers().GetCustomerID(ctx, user.ID)
|
||||
require.NoError(t, err)
|
||||
@ -371,8 +372,10 @@ func TestService_BalanceInvoiceItems(t *testing.T) {
|
||||
var status *console.UserStatus
|
||||
if i%2 == 0 {
|
||||
status = &statusDeleted
|
||||
} else {
|
||||
} else if i%3 == 0 {
|
||||
status = &statusPending
|
||||
} else {
|
||||
status = &statusLegalHold
|
||||
}
|
||||
err := satellite.DB.Console().Users().Update(ctx, user.ID, console.UpdateUserRequest{
|
||||
Status: status,
|
||||
@ -409,7 +412,7 @@ func TestService_InvoiceElementsProcessing(t *testing.T) {
|
||||
|
||||
numberOfProjects := 19
|
||||
numberOfInactiveUsers := 5
|
||||
pendingDeletionStatus := console.PendingDeletion
|
||||
status := console.PendingDeletion
|
||||
// user to be deactivated later
|
||||
var activeUser console.User
|
||||
// generate test data, each user has one project and some credits
|
||||
@ -431,8 +434,15 @@ func TestService_InvoiceElementsProcessing(t *testing.T) {
|
||||
activeUser = *user
|
||||
continue
|
||||
}
|
||||
if i%2 == 0 {
|
||||
status = console.Deleted
|
||||
} else if i%3 == 0 {
|
||||
status = console.PendingDeletion
|
||||
} else {
|
||||
status = console.LegalHold
|
||||
}
|
||||
err = satellite.DB.Console().Users().Update(ctx, user.ID, console.UpdateUserRequest{
|
||||
Status: &pendingDeletionStatus,
|
||||
Status: &status,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
@ -453,7 +463,7 @@ func TestService_InvoiceElementsProcessing(t *testing.T) {
|
||||
|
||||
// deactivate user
|
||||
err = satellite.DB.Console().Users().Update(ctx, activeUser.ID, console.UpdateUserRequest{
|
||||
Status: &pendingDeletionStatus,
|
||||
Status: &status,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user