UNPKG

6.93 kBSource Map (JSON)View Raw
1{"version":3,"file":"PassportModel.js","names":["PassportModel","collection","username","providerId","provider","canonizeUsername","toLowerCase","count","prefixusername","Math","random","Err","constructor","module","UserModel","findById","userId","params","object","pick","toObject","Object","assign","jwt","sign","getIdentity","ctx","config","secret","token","verify","decodeToken","_id","Model","schema","type","Types","ObjectId","raw","profile","meta","fetchedAt","Date","String","required","refreshToken","lastError","lastErrorAt","status","options","model"],"sources":["../../src/models/PassportModel.js"],"sourcesContent":["import Model from '@lskjs/db/Model';\nimport Err from '@lskjs/err';\nimport canonizeUsername from '@lskjs/utils/canonizeUsername';\nimport jwt from 'jsonwebtoken';\nimport pick from 'lodash/pick';\n\nexport class PassportModel extends Model {\n static schema = {\n userId: {\n type: Model.Types.ObjectId,\n // ref: 'User',\n },\n // Сырые данные которые пришли из соц сети\n raw: {\n type: Object,\n default: {},\n },\n // Обработанные данные из соцсети\n profile: {\n type: Object, // по идее тут должна быть структура данных\n default: {},\n },\n meta: {\n type: Object,\n },\n // Дата последнего обновления данных\n fetchedAt: {\n type: Date,\n default: null,\n },\n\n // тип провадера\n type: {\n type: String,\n },\n // название соцсети из passport\n provider: {\n type: String,\n required: true,\n },\n // ID из соцсети\n providerId: {\n // link to social network\n type: String,\n required: true,\n },\n // token из соцсети\n token: {\n type: String,\n },\n refreshToken: {\n type: String,\n },\n lastError: {\n type: Object,\n },\n lastErrorAt: {\n type: Date,\n },\n // статус пасспорта: валиден или нет\n // пока не используется\n status: {\n type: String,\n enum: [null, 'valid', 'invalid', 'removed', 'expired', 'unauthorized'],\n default: null,\n },\n };\n static options = {\n model: 'PassportModel',\n collection: 'passport',\n // timestamps: true,\n // toJSON: { virtuals: true },\n // toObject: { virtuals: true },\n };\n\n async generateUsername(collection) {\n // const { User: UserModel } = ctx.models;\n let username = `${this.providerId}_${this.provider}`;\n username = canonizeUsername(username.toLowerCase());\n if (!collection) return username;\n if (!(await collection.count({ username }))) return username;\n const prefixusername = `${username}_`;\n\n // TODO!!!!!! убрать хуев китайский стайл цикл\n username = prefixusername + (Math.random() % 100);\n if (!(await collection.count({ username }))) return username;\n\n username = prefixusername + (Math.random() % 100);\n if (!(await collection.count({ username }))) return username;\n\n throw new Err('cant generate unique username');\n }\n async getUser() {\n const UserModel = await this.constructor.module('models.UserModel');\n return UserModel.findById(this.userId);\n }\n\n getIdentity(params = {}) {\n const object = pick(this.toObject(), ['_id']);\n return Object.assign(object, params);\n }\n\n generateToken(params) {\n return jwt.sign(this.getIdentity(params), ctx.config.jwt.secret);\n }\n\n static decodeToken(token) {\n return jwt.verify(token, ctx.config.jwt.secret);\n }\n\n static async getByToken(token) {\n const { _id } = this.decodeToken(token);\n return this.findById(_id);\n }\n}\n\nexport default PassportModel;\n"],"mappings":"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"}
\No newline at end of file