Как загрузить данные пользователя из базы данных после авторизации в Facebook с использованием passport.js - PullRequest
0 голосов
/ 29 октября 2019

У меня есть база данных для пользователя, которая включает имя, адрес электронной почты, адрес, пароль IC и т. Д. В настоящее время я использую локальную паспортную стратегию для аутентификации пользователя.

Я хочу интегрировать стратегию facebook. Я могу понять процесс. но проблема, с которой я сталкиваюсь, заключается в том, как загрузить свои данные (имя, IC, адрес и т. д.) из базы данных после успешного входа в Facebook. Facebook выдает только электронную почту, имя и т. д. Я хочу быть похожим, после входа в систему через facebook. Мой req.user будет иметь пользовательские данные из базы данных, как и локальная стратегия

USER MODEL

const userSchema = new mongoose.Schema({
    // add
    // Gender
    //IC number

    name: {
        type: String,
        requried: true,
        default: undefined,
        trim: true
    },
    IC: {
        type: String,
        requried: false,
        default: undefined,
        trim: true
    },
    gender: {
        type: String,
        requried: true,
        default: undefined
    },
    email: {
        type: String,
        requried: true,
        default: undefined,
        trim: true,
        unique: true, //One email can register once
        vlaidate(value) {
            if (!validator.isEmail(value)) {
                throw new error('Email is invalid.');
            }
        }
    },
    password: {
        type: String,
        require: true,
        default: undefined,
        trim: true,
        minlength: 9 //password must be 9 characters long
    },
    phone: {
        type: String,
        requried: true,
        default: undefined,
        maxlength: 14,
        //checking for Malaysian Number
        validate(value) {
            if (!validator.isMobilePhone(value, 'ms-MY', {
                    strictMode: true
                })) {
                throw new Error('Phone Number is invalid');
            }
        }
    },
    //for members to know wether they deactivated or the application is pending
    status: {
        type: String,
        default: undefined,
        enum: ['active', 'deactivated', 'pending']
    },
    //roles will be assigned by the server.
    role: {
        type: String,
        requried: true,
        enum: ['user', 'admin']
    },
    imageProfile: {
        type: String,
        default: undefined,
        trim: true
    }
...