我想通过Facebook和Google进行社交登录。
我将其分为3个模型:用户,用户个人资料和authenticationProviders。
userProfiles和authProviders都将1:1链接到用户。 由于我想实施该选项,即用户可以通过Google登录,也可以通过提供电子邮件和密码来手动创建帐户
这是一个好习惯还是有其他一些更好的方法?
这是我的模特
用户
CREATE TABLE users(
id SERIAL PRIMARY KEY NOT NULL,
name TEXT,
screenname TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
)
用户个人资料
CREATE TABLE userProfile(
email TEXT,
password TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
user_id INTEGER,
PRIMARY KEY (user_id),
FOREIGN KEY (user_id) REFERENCES users (id)
)
AuthenticationProvider
CREATE TYPE providerType AS ENUM ('google', 'facebook');
CREATE TABLE authenticationProviders (
providerKey varchar(128) NOT NULL,
providerType providerType,
created_at TIMESTAMP,
user_id INTEGER,
PRIMARY KEY (user_id),
FOREIGN KEY (user_id) REFERENCES users (id)
)