WIP on security
This commit is contained in:
parent
93213099ac
commit
5592d715d1
|
@ -97,6 +97,28 @@ type Listing =
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// Security settings for a user
|
||||||
|
type SecurityInfo =
|
||||||
|
{ /// The ID of the citizen to whom these settings apply
|
||||||
|
Id : CitizenId
|
||||||
|
|
||||||
|
/// The number of failed log on attempts (reset to 0 on successful log on)
|
||||||
|
FailedLogOnAttempts : int16
|
||||||
|
|
||||||
|
/// Whether the account is locked
|
||||||
|
AccountLocked : bool
|
||||||
|
|
||||||
|
/// The token the user must provide to take their desired action
|
||||||
|
Token : string option
|
||||||
|
|
||||||
|
/// The action to which the token applies
|
||||||
|
TokenUsage : string option
|
||||||
|
|
||||||
|
/// When the token expires
|
||||||
|
TokenExpires : Instant option
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// A skill the job seeker possesses
|
/// A skill the job seeker possesses
|
||||||
type Skill =
|
type Skill =
|
||||||
{ /// The ID of the skill
|
{ /// The ID of the skill
|
||||||
|
|
|
@ -163,6 +163,24 @@ module Startup =
|
||||||
is_legacy BOOLEAN NOT NULL,
|
is_legacy BOOLEAN NOT NULL,
|
||||||
display_name TEXT,
|
display_name TEXT,
|
||||||
other_contacts TEXT)"
|
other_contacts TEXT)"
|
||||||
|
if needsTable "listing" then
|
||||||
|
"CREATE TABLE jjj.listing (
|
||||||
|
id UUID NOT NULL PRIMARY KEY,
|
||||||
|
citizen_id UUID NOT NULL,
|
||||||
|
created_on TIMESTAMPTZ NOT NULL,
|
||||||
|
title TEXT NOT NULL,
|
||||||
|
continent_id UUID NOT NULL,
|
||||||
|
region TEXT NOT NULL,
|
||||||
|
is_remote BOOLEAN NOT NULL,
|
||||||
|
is_expired BOOLEAN NOT NULL,
|
||||||
|
updated_on TIMESTAMPTZ NOT NULL,
|
||||||
|
listing_text TEXT NOT NULL,
|
||||||
|
needed_by DATE,
|
||||||
|
was_filled_here BOOLEAN,
|
||||||
|
FOREIGN KEY fk_listing_citizen (citizen_id) REFERENCES jjj.citizen (id) ON DELETE CASCADE,
|
||||||
|
FOREIGN KEY fk_listing_continent (continent_id) REFERENCES jjj.continent (id))"
|
||||||
|
"CREATE INDEX idx_listing_citizen ON jjj.listing (citizen_id)"
|
||||||
|
"CREATE INDEX idx_listing_continent ON jjj.listing (continent_id)"
|
||||||
if needsTable "profile" then
|
if needsTable "profile" then
|
||||||
"CREATE TABLE jjj.profile (
|
"CREATE TABLE jjj.profile (
|
||||||
citizen_id UUID NOT NULL PRIMARY KEY,
|
citizen_id UUID NOT NULL PRIMARY KEY,
|
||||||
|
@ -188,24 +206,16 @@ module Startup =
|
||||||
FOREIGN KEY fk_profile_skill_profile (citizen_id) REFERENCES jjj.profile (citizen_id)
|
FOREIGN KEY fk_profile_skill_profile (citizen_id) REFERENCES jjj.profile (citizen_id)
|
||||||
ON DELETE CASCADE)"
|
ON DELETE CASCADE)"
|
||||||
"CREATE INDEX idx_profile_skill_profile ON jjj.profile_skill (citizen_id)"
|
"CREATE INDEX idx_profile_skill_profile ON jjj.profile_skill (citizen_id)"
|
||||||
if needsTable "listing" then
|
if needsTable "security_info" then
|
||||||
"CREATE TABLE jjj.listing (
|
"CREATE TABLE jjj.security_info (
|
||||||
id UUID NOT NULL PRIMARY KEY,
|
id UUID NOT NULL PRIMARY KEY,
|
||||||
citizen_id UUID NOT NULL,
|
failed_attempts SMALLINT NOT NULL,
|
||||||
created_on TIMESTAMPTZ NOT NULL,
|
is_locked BOOLEAN NOT NULL,
|
||||||
title TEXT NOT NULL,
|
token TEXT,
|
||||||
continent_id UUID NOT NULL,
|
token_usage TEXT,
|
||||||
region TEXT NOT NULL,
|
token_expires TIMESTAMPTZ,
|
||||||
is_remote BOOLEAN NOT NULL,
|
FOREIGN KEY fk_security_info_citizen (id) REFERENCES jjj.citizen (id) ON DELETE CASCADE)"
|
||||||
is_expired BOOLEAN NOT NULL,
|
"CREATE INDEX idx_security_info_expires ON jjj.security_info (token_expires)"
|
||||||
updated_on TIMESTAMPTZ NOT NULL,
|
|
||||||
listing_text TEXT NOT NULL,
|
|
||||||
needed_by DATE,
|
|
||||||
was_filled_here BOOLEAN,
|
|
||||||
FOREIGN KEY fk_listing_citizen (citizen_id) REFERENCES jjj.citizen (id) ON DELETE CASCADE,
|
|
||||||
FOREIGN KEY fk_listing_continent (continent_id) REFERENCES jjj.continent (id))"
|
|
||||||
"CREATE INDEX idx_listing_citizen ON jjj.listing (citizen_id)"
|
|
||||||
"CREATE INDEX idx_listing_continent ON jjj.listing (continent_id)"
|
|
||||||
if needsTable "success" then
|
if needsTable "success" then
|
||||||
"CREATE TABLE jjj.success (
|
"CREATE TABLE jjj.success (
|
||||||
id UUID NOT NULL PRIMARY KEY,
|
id UUID NOT NULL PRIMARY KEY,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user