RocketChat/Rocket.Chat

View on GitHub
apps/meteor/app/iframe-login/server/iframe_server.ts

Summary

Maintainability
A
0 mins
Test Coverage
import type { ServerMethods } from '@rocket.chat/ddp-client';
import { Users } from '@rocket.chat/models';
import { Accounts } from 'meteor/accounts-base';
import { check } from 'meteor/check';
import { Meteor } from 'meteor/meteor';
import { OAuth } from 'meteor/oauth';

Accounts.registerLoginHandler('iframe', async (result) => {
    if (!result.iframe) {
        return;
    }

    check(result.token, String);

    const user = await Users.findOne({
        'services.iframe.token': result.token,
    });

    if (user) {
        return {
            userId: user._id,
        };
    }
});

declare module '@rocket.chat/ddp-client' {
    // eslint-disable-next-line @typescript-eslint/naming-convention
    interface ServerMethods {
        'OAuth.retrieveCredential'(credentialToken: string, credentialSecret: string): unknown;
    }
}

Meteor.methods<ServerMethods>({
    'OAuth.retrieveCredential'(credentialToken, credentialSecret) {
        return OAuth.retrieveCredential(credentialToken, credentialSecret);
    },
});