force unique user name
This commit is contained in:
parent
a1d842c7a3
commit
8a462252af
|
@ -35,7 +35,7 @@ export function FundErrorModal () {
|
||||||
onHide={() => setError(false)}
|
onHide={() => setError(false)}
|
||||||
>
|
>
|
||||||
<Modal.Body>
|
<Modal.Body>
|
||||||
<p>you're out of sats!</p>
|
<p className='font-weight-bolder'>you are out of sats</p>
|
||||||
<div className='d-flex justify-content-end'>
|
<div className='d-flex justify-content-end'>
|
||||||
<Link href='/wallet?type=fund'>
|
<Link href='/wallet?type=fund'>
|
||||||
<Button variant='success' onClick={() => setError(false)}>fund</Button>
|
<Button variant='success' onClick={() => setError(false)}>fund</Button>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
export function ensureProtocol (value) {
|
export function ensureProtocol (value) {
|
||||||
if (!/^[a-z0-9]+:(\/\/)?/.test(value)) {
|
if (!/^([a-z0-9]+:\/\/|mailto:)/.test(value)) {
|
||||||
value = 'http://' + value
|
value = 'http://' + value
|
||||||
}
|
}
|
||||||
return value
|
return value
|
||||||
|
|
|
@ -9,15 +9,32 @@ const options = {
|
||||||
providers: [
|
providers: [
|
||||||
Providers.GitHub({
|
Providers.GitHub({
|
||||||
clientId: process.env.GITHUB_ID,
|
clientId: process.env.GITHUB_ID,
|
||||||
clientSecret: process.env.GITHUB_SECRET
|
clientSecret: process.env.GITHUB_SECRET,
|
||||||
|
profile: profile => {
|
||||||
|
return {
|
||||||
|
...profile,
|
||||||
|
name: profile.login
|
||||||
|
}
|
||||||
|
}
|
||||||
}),
|
}),
|
||||||
Providers.Twitter({
|
Providers.Twitter({
|
||||||
clientId: process.env.TWITTER_ID,
|
clientId: process.env.TWITTER_ID,
|
||||||
clientSecret: process.env.TWITTER_SECRET
|
clientSecret: process.env.TWITTER_SECRET,
|
||||||
|
profile: profile => {
|
||||||
|
console.log(profile)
|
||||||
|
return {
|
||||||
|
...profile,
|
||||||
|
name: profile.screen_name
|
||||||
|
}
|
||||||
|
}
|
||||||
}),
|
}),
|
||||||
Providers.Email({
|
Providers.Email({
|
||||||
server: process.env.EMAIL_SERVER,
|
server: process.env.EMAIL_SERVER,
|
||||||
from: process.env.EMAIL_FROM
|
from: process.env.EMAIL_FROM,
|
||||||
|
profile: profile => {
|
||||||
|
console.log(profile)
|
||||||
|
return profile
|
||||||
|
}
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
adapter: Adapters.Prisma.Adapter({ prisma }),
|
adapter: Adapters.Prisma.Adapter({ prisma }),
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
-- AlterEnum
|
||||||
|
ALTER TYPE "WithdrawlStatus" ADD VALUE 'UNKNOWN_FAILURE';
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION assign_name() RETURNS TRIGGER AS $$
|
||||||
|
DECLARE
|
||||||
|
BEGIN
|
||||||
|
-- if doesn't have a name, SPLIT email on @ and assign to name
|
||||||
|
IF NEW.name IS NULL THEN
|
||||||
|
NEW.name = SPLIT_PART(NEW.email, '@', 1);
|
||||||
|
END IF;
|
||||||
|
-- replace unsupported characters (non alphanum + _) in name with _
|
||||||
|
NEW.name = REGEXP_REPLACE(NEW.name, '\W|_', '_', 'gi');
|
||||||
|
-- while name exists append random number
|
||||||
|
WHILE EXISTS (SELECT 1 FROM users WHERE name = NEW.name) LOOP
|
||||||
|
NEW.name = NEW.name || floor(random() * 10 + 1)::int;
|
||||||
|
END LOOP;
|
||||||
|
|
||||||
|
RETURN NEW;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE TRIGGER name_tgr
|
||||||
|
BEFORE INSERT ON "users"
|
||||||
|
FOR EACH ROW EXECUTE PROCEDURE assign_name();
|
|
@ -14,7 +14,7 @@ model User {
|
||||||
id Int @id @default(autoincrement())
|
id Int @id @default(autoincrement())
|
||||||
createdAt DateTime @default(now()) @map(name: "created_at")
|
createdAt DateTime @default(now()) @map(name: "created_at")
|
||||||
updatedAt DateTime @updatedAt @map(name: "updated_at")
|
updatedAt DateTime @updatedAt @map(name: "updated_at")
|
||||||
name String? @unique
|
name String @unique
|
||||||
email String? @unique
|
email String? @unique
|
||||||
emailVerified DateTime? @map(name: "email_verified")
|
emailVerified DateTime? @map(name: "email_verified")
|
||||||
image String?
|
image String?
|
||||||
|
|
Loading…
Reference in New Issue