@xrengine/server-core
Version:
Shared components for XREngine server
47 lines (40 loc) • 1.19 kB
text/typescript
// Initializes the `login` service on path `/login`
import { Application } from '../../../declarations'
import config from '../../appconfig'
import logger from '../../ServerLogger'
import { Login } from './login.class'
import loginDocs from './login.docs'
import hooks from './login.hooks'
// Add this service to the service type index
declare module '@xrengine/common/declarations' {
interface ServiceTypes {
login: Login
}
}
function redirect(req, res, next): any {
try {
if (res.data.error) {
return res.redirect(`${config.client.url}/?error=${res.data.error as string}`)
}
return res.redirect(`${config.client.url}/auth/magiclink?type=login&token=${res.data.token as string}`)
} catch (err) {
logger.error(err)
throw err
}
}
export default (app: Application) => {
const options = {
paginate: app.get('paginate')
}
/**
* Initialize our service with any options it requires and docs
*/
const event = new Login(options, app)
event.docs = loginDocs
app.use('login', event, redirect)
/**
* Get our initialized service so that we can register hooks
*/
const service = app.service('login')
service.hooks(hooks)
}