From: Enrique Hernandez Date: Tue, 9 Feb 2021 04:07:25 +0000 (-0600) Subject: add login and auth to socket X-Git-Tag: v0.9~96 X-Git-Url: https://andrewgundersen.net/repos?a=commitdiff_plain;h=7cb14bc8502415c46b020d6f6620aedf7a7bc644;p=mime-chat add login and auth to socket --- diff --git a/src/background/auth.ts b/src/background/auth.ts deleted file mode 100644 index 81e086f..0000000 --- a/src/background/auth.ts +++ /dev/null @@ -1,20 +0,0 @@ - -export const authUser = (event: any, arg: any) => { - let reply; - reply = { - id: "2", - email: "hernandeze@xavier.edu", - firstName: "Enrique", - lastName: "Hernandez", - access_token: "test-token" - }; - if (arg === ['undefined']) { - reply = new Error('AUTH-FAILED'); - } - event.reply('auth-user-reply', reply); -} - -export const authLogin = (event: any, arg: any) => { - console.log('testing login', arg); - event.reply('auth-login-reply', true); -} diff --git a/src/background/run.ts b/src/background/run.ts index 21b5151..4c2404a 100644 --- a/src/background/run.ts +++ b/src/background/run.ts @@ -1,8 +1,7 @@ import { createWindow } from './createWindow'; import { ipcMain } from "electron"; -import { initSession, sendMessage} from './session'; +import { initSession, sendMessage, authUser, authLogin} from './session'; import { windowEmitter } from './windowEmitter'; -import { authUser, authLogin } from './auth'; const portAudio = require('naudiodon'); interface ipcRendererPayload { @@ -24,21 +23,20 @@ export function main(): void { // create main window. const win = createWindow({ width: 350, height: 525, resizable: false }); - windowEmitter.on('ipc-renderer', (payload: ipcRendererPayload) => { win.webContents.send(payload.endpoint, { message: payload.message }); }); - const handleIpcRender = (event: any, arg: any) => { - sendMessage(arg) + const handleMessage = (event: any, arg: any) => { + sendMessage(arg); } const windowMount = (): void => { windowEmitter.emit('window-active', true); // ipc event handlers - ipcMain.on('send-message', handleIpcRender); + ipcMain.on('send-message', handleMessage); ipcMain.on('auth-login', authLogin); } diff --git a/src/background/session.ts b/src/background/session.ts index 060c554..1b50805 100644 --- a/src/background/session.ts +++ b/src/background/session.ts @@ -1,21 +1,57 @@ import WebSocket from 'ws'; import { windowEmitter } from './windowEmitter'; +type Message = { + type:string; + id: string; +} + +interface RenderMessage extends Message { + content: string; + context: string; + subContext: string; + modifiers: string; + time: string; +} + +interface AuthMessage extends Message { + email: string; + firstName: string; + lastName: string; + access_token: string; +} + +interface AuthRequest { + token: string; +} + +interface PostLogin { + email: string; + password: string; +} + +interface PostMessage { + content: string; +} + const ip = 'ws://localhost'; const port = 8080; const username = 'hernandeze2@xavier.edu'; +let socket: WebSocket; const receiveMessage = (message: string): void => { // NOTE assuming message is JSON string - const parsed = JSON.parse(message); - windowEmitter.emit('ipc-renderer', { - endpoint: 'render-message', - message: parsed - }); + const parsed: RenderMessage | AuthMessage = JSON.parse(message); + if (parsed.type === "render") { + windowEmitter.emit('ipc-renderer', { + endpoint: 'render-message', + message: parsed + }); + } else if (parsed.type === "auth") { + windowEmitter.emit('auth-resp', parsed); + } } -let socket: WebSocket; - export function initSession() { try { @@ -33,7 +69,23 @@ export function initSession() { } } -export const sendMessage = (content: string | Buffer) => { +export const authUser = (event: any, arg: AuthRequest) => { + sendMessage({ + content: arg.token + }); + windowEmitter.on('auth-resp', (payload: AuthMessage) => { + event.reply('auth-user-reply', payload); + }) +} + +export const authLogin = (event: any, arg: PostLogin) => { + sendMessage(arg) + windowEmitter.on('auth-resp', (payload: AuthMessage) => { + event.reply('auth-login-reply', payload); + }) +} + +export const sendMessage = (content: PostMessage | Buffer | PostLogin) => { if (content instanceof Buffer) { socket.send(content); } else { diff --git a/src/background/windowEmitter.ts b/src/background/windowEmitter.ts index 65bf9ae..a56c7df 100644 --- a/src/background/windowEmitter.ts +++ b/src/background/windowEmitter.ts @@ -3,3 +3,9 @@ const EventEmitter = require('events'); class WindowEmitter extends EventEmitter {} export const windowEmitter = new WindowEmitter(); + +const ipcRend = (endpoint: string, message: any) => { + win.webContents.send(endpoint, { + message: message + }) +} diff --git a/src/modules/auth.ts b/src/modules/auth.ts index 92f84fc..65e5907 100644 --- a/src/modules/auth.ts +++ b/src/modules/auth.ts @@ -31,7 +31,9 @@ if (token) { state.authenticating = true; // authenticate token against crimata-platform - send([token]); + send({ + token: token + }); watch([loading], () => { if (error.value) { diff --git a/src/modules/ipc.ts b/src/modules/ipc.ts index 7f7d0a9..aebe903 100644 --- a/src/modules/ipc.ts +++ b/src/modules/ipc.ts @@ -22,9 +22,6 @@ export const useIpc = (endpoint: string) => { error.value = arg; throw arg; } else { - if (callback) { - callback(arg); - } data.value = arg; loading.value = false; } diff --git a/src/views/login.vue b/src/views/login.vue index 83d1a89..2f60f7e 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -50,13 +50,11 @@ export default defineComponent({ password: payload.password, }); console.log(data.value, "login"); - // setUser(data.value, payload.rememberMe); - // router.push({ name: "home" }); }; watch(loading, () => { - console.log("loading changed"); - console.log(data.value, "post laoding"); + setUser(data.value, payload.rememberMe); + router.push({ name: "home" }); }); return {