52 lines
1.2 KiB
JavaScript
52 lines
1.2 KiB
JavaScript
// @flow
|
|
import fs from "fs";
|
|
import path from "path";
|
|
import { DataTypes, sequelize } from "../sequelize";
|
|
|
|
// Each authentication provider must have a definition under server/auth, the
|
|
// name of the file will be used as reference in the db, one less thing to config
|
|
const authProviders = fs
|
|
.readdirSync(path.resolve(__dirname, "..", "auth"))
|
|
.filter(
|
|
(file) =>
|
|
file.indexOf(".") !== 0 &&
|
|
!file.includes(".test") &&
|
|
!file.includes("index.js")
|
|
)
|
|
.map((fileName) => fileName.replace(".js", ""));
|
|
|
|
const AuthenticationProvider = sequelize.define(
|
|
"authentication_providers",
|
|
{
|
|
id: {
|
|
type: DataTypes.UUID,
|
|
defaultValue: DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
name: {
|
|
type: DataTypes.STRING,
|
|
validate: {
|
|
isIn: [authProviders],
|
|
},
|
|
},
|
|
enabled: {
|
|
type: DataTypes.BOOLEAN,
|
|
defaultValue: true,
|
|
},
|
|
providerId: {
|
|
type: DataTypes.STRING,
|
|
},
|
|
},
|
|
{
|
|
timestamps: true,
|
|
updatedAt: false,
|
|
}
|
|
);
|
|
|
|
AuthenticationProvider.associate = (models) => {
|
|
AuthenticationProvider.belongsTo(models.Team);
|
|
AuthenticationProvider.hasMany(models.UserAuthentication);
|
|
};
|
|
|
|
export default AuthenticationProvider;
|