24 lines
768 B
SQL
24 lines
768 B
SQL
WITH "created" AS (
|
|
INSERT INTO "users" (
|
|
"email",
|
|
"full_name",
|
|
"active")
|
|
VALUES (:'email',
|
|
'Initial User',
|
|
TRUE)
|
|
RETURNING "id"
|
|
),
|
|
"roles" AS (
|
|
INSERT INTO "user_roles" ("user_id", "role_name")
|
|
SELECT "id", 'admin'
|
|
FROM "created"
|
|
)
|
|
INSERT INTO "user_tokens" ("user_id", "token", "realm")
|
|
SELECT "id",
|
|
(SELECT string_agg (substr (c, (random() * length (c) + 1)::integer, 1), '') AS "token"
|
|
FROM (VALUES ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789')) AS x(c),
|
|
generate_series (1, 32)),
|
|
'invite'
|
|
FROM "created"
|
|
RETURNING 'https://example.com/auth/password/' || "token" AS "Password URL"
|