const ForbiddenError = require('vn-loopback/util/forbiddenError');
const {models} = require('vn-loopback/server/server');

module.exports = Self => {
    require('../methods/account/sync')(Self);
    require('../methods/account/sync-by-id')(Self);
    require('../methods/account/sync-all')(Self);
    require('../methods/account/login')(Self);
    require('../methods/account/logout')(Self);
    require('../methods/account/change-password')(Self);
    require('../methods/account/set-password')(Self);

    Self.setUnverifiedPassword = async(id, pass, options) => {
        const {emailVerified} = await models.VnUser.findById(id, {fields: ['emailVerified']}, options);
        if (emailVerified) {
            throw new ForbiddenError(
                'Through this procedure, it is not possible to modify the password of users with verified email'
            );
        }

        await models.VnUser.setPassword(id, pass, options);
    };
};