@metacall/faas
Version:
Reimplementation of MetaCall FaaS platform written in TypeScript.
46 lines (37 loc) • 988 B
JavaScript
const jwt = require('jsonwebtoken');
const secret = 'secret';
// Mock user validation (DB)
function validUser(user, password) {
return user === 'viferga' && password === '123';
}
// Sign in function that returns a token if login is valid
function signin(user, password) {
if (validUser(user, password)) return jwt.sign({ user, password }, secret);
return false;
}
// Reverse string function
function reverse({ str }) {
return str.split('').reverse().join('');
}
// Sum function
function sum({ a, b }) {
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands
return a + b;
}
// Middleware for verifying the token
function middleware(f) {
return function (token, args) {
try {
return jwt.verify(token, secret) ? f(args) : 'Invalid token';
} catch (e) {
return e.message;
}
};
}
// Export sign in without middleware and reverse and sum with it
module.exports = {
signin,
reverse: middleware(reverse),
sum: middleware(sum)
};