mirror of
https://github.com/grafana/grafana.git
synced 2024-11-27 11:20:27 -06:00
a189cd1832
* expire with existng cleanup service * expire with new temp user service * make Drone happy :) * add expiry status * remove other approach * cleanup * add test for idempotency * add migration from datetime to unix ts * update cmd names * change lifetime config to duration * remove unnecessart formatting * add comment * update docs * remove max bound and introduce min error * simplify sql * remove comment * allow any outstanding to exist for at least 24 hours * revert created ts change Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com> * add extra state check to cleanup step Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
104 lines
2.2 KiB
Go
104 lines
2.2 KiB
Go
package models
|
|
|
|
import (
|
|
"errors"
|
|
"time"
|
|
)
|
|
|
|
// Typed errors
|
|
var (
|
|
ErrTempUserNotFound = errors.New("User not found")
|
|
)
|
|
|
|
type TempUserStatus string
|
|
|
|
const (
|
|
TmpUserSignUpStarted TempUserStatus = "SignUpStarted"
|
|
TmpUserInvitePending TempUserStatus = "InvitePending"
|
|
TmpUserCompleted TempUserStatus = "Completed"
|
|
TmpUserRevoked TempUserStatus = "Revoked"
|
|
TmpUserExpired TempUserStatus = "Expired"
|
|
)
|
|
|
|
// TempUser holds data for org invites and unconfirmed sign ups
|
|
type TempUser struct {
|
|
Id int64
|
|
OrgId int64
|
|
Version int
|
|
Email string
|
|
Name string
|
|
Role RoleType
|
|
InvitedByUserId int64
|
|
Status TempUserStatus
|
|
|
|
EmailSent bool
|
|
EmailSentOn time.Time
|
|
Code string
|
|
RemoteAddr string
|
|
|
|
Created int64
|
|
Updated int64
|
|
}
|
|
|
|
// ---------------------
|
|
// COMMANDS
|
|
|
|
type CreateTempUserCommand struct {
|
|
Email string
|
|
Name string
|
|
OrgId int64
|
|
InvitedByUserId int64
|
|
Status TempUserStatus
|
|
Code string
|
|
Role RoleType
|
|
RemoteAddr string
|
|
|
|
Result *TempUser
|
|
}
|
|
|
|
type UpdateTempUserStatusCommand struct {
|
|
Code string
|
|
Status TempUserStatus
|
|
}
|
|
|
|
type ExpireTempUsersCommand struct {
|
|
OlderThan time.Time
|
|
|
|
NumExpired int64
|
|
}
|
|
|
|
type UpdateTempUserWithEmailSentCommand struct {
|
|
Code string
|
|
}
|
|
|
|
type GetTempUsersQuery struct {
|
|
OrgId int64
|
|
Email string
|
|
Status TempUserStatus
|
|
|
|
Result []*TempUserDTO
|
|
}
|
|
|
|
type GetTempUserByCodeQuery struct {
|
|
Code string
|
|
|
|
Result *TempUserDTO
|
|
}
|
|
|
|
type TempUserDTO struct {
|
|
Id int64 `json:"id"`
|
|
OrgId int64 `json:"orgId"`
|
|
Name string `json:"name"`
|
|
Email string `json:"email"`
|
|
Role RoleType `json:"role"`
|
|
InvitedByLogin string `json:"invitedByLogin"`
|
|
InvitedByEmail string `json:"invitedByEmail"`
|
|
InvitedByName string `json:"invitedByName"`
|
|
Code string `json:"code"`
|
|
Status TempUserStatus `json:"status"`
|
|
Url string `json:"url"`
|
|
EmailSent bool `json:"emailSent"`
|
|
EmailSentOn time.Time `json:"emailSentOn"`
|
|
Created time.Time `json:"createdOn"`
|
|
}
|