You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
4.0 KiB
118 lines
4.0 KiB
const express = require('express')
|
|
const router = express.Router()
|
|
const auth = require('../session/auth')
|
|
// const jwt = require('jsonwebtoken')
|
|
|
|
module.exports = function (pCtx) {
|
|
const services = require('./services')(pCtx)
|
|
|
|
/**
|
|
* @api {post} /session/login User Login
|
|
* @apiName post:/session/login
|
|
* @apiVersion 0.0.1
|
|
* @apiGroup Session
|
|
* @apiDescription Api for User login
|
|
* Credientials must be set in a json body
|
|
*
|
|
* @apiParam {String} user Username for login
|
|
* @apiParam {String} pass Password for login
|
|
*
|
|
* @apiParamExample {json} Login Example:
|
|
* {
|
|
* "user": "User name",
|
|
* "pass": "User plain password",
|
|
* }
|
|
*
|
|
* @apiSuccess {Object} SessionCtx Context of successful login
|
|
* @apiSuccess {String} SessionCtx.jwtAuth Authentification token to use for get one jwtAccess token - Should be saved locally and set in header authorization field
|
|
* @apiSuccess {String} SessionCtx.user Just a reminder for user
|
|
*
|
|
* @apiError User:NotFound Username or email not found
|
|
* @apiError User:WrongPassword User found but password does not match
|
|
*/
|
|
router.post('/login', services.login)
|
|
|
|
/**
|
|
* @api {post} /session/access User Acces
|
|
* @apiName post:/session/access
|
|
* @apiVersion 0.0.1
|
|
* @apiGroup Session
|
|
* @apiDescription Get an jwtAccess from jwtAuth to access to all API with a short period
|
|
* Futermore, jwtAuth token TTL is updated
|
|
*
|
|
* @apiParam {String} jwtAuth jwtAuth token generated from /session/login
|
|
*
|
|
* @apiParamExample {json} jwtAuth:
|
|
* {
|
|
* "jwtAuth": "[Authentification JWT token]",
|
|
* }
|
|
*
|
|
* @apiSuccess {Object} SessionCtx Context of successful login
|
|
* @apiSuccess {String} SessionCtx.jwtAuth Updated jwtAuth token
|
|
* @apiSuccess {String} SessionCtx.jwtAccess Access token to use for each request to server - Should be saved locally and set in header authorization field
|
|
*
|
|
* @apiError User:NotFound Username or email not found
|
|
* @apiError User:PasswordChanged User found but password does not match from login one
|
|
* @apiError jwtAuth:Missing jwtAuth is missing in body request
|
|
* @apiError jwtAuth:InvalidSignature Signature of jwtAuth is invalid
|
|
* @apiError jwtAuth:JwtExpired Token is expired. A login try to login again
|
|
* @apiError jwtAuth:CorruptedPayload Token payload is corrupted (server version changes, wrong userAgent ou client ip address)
|
|
*/
|
|
// router.post('/access', services.access)
|
|
|
|
router.use(auth(pCtx))
|
|
|
|
/**
|
|
* @api {get} /session/me About me
|
|
* @apiName get:/session/me
|
|
* @apiVersion 0.0.1
|
|
* @apiGroup Session
|
|
* @apiDescription Get information about user of jwtAccess token
|
|
* Common case: check if user has still has access rights
|
|
*
|
|
* @apiParam {Header} token jwtAccess token
|
|
*
|
|
* @apiSuccess {Object} res Response
|
|
* @apiSuccess {String} res.user User information
|
|
*
|
|
* @apiUse SessionError
|
|
*/
|
|
router.get('/me', services.me)
|
|
|
|
/**
|
|
* @api {get} /session/me/filters My filters - Get
|
|
* @apiName get:/session/me/filters
|
|
* @apiVersion 0.0.1
|
|
* @apiGroup Session
|
|
* @apiDescription Get all custom filters created by current user
|
|
*
|
|
* @apiParam {Header} token jwtAccess token
|
|
*
|
|
* @apiSuccess {Object} res Response
|
|
* @apiSuccess {String} res.data All filters
|
|
*
|
|
* @apiUse SessionError
|
|
*/
|
|
router.get('/me/filters', services.filtersGet)
|
|
|
|
/**
|
|
* @api {post} /session/me/filters My filters - Create
|
|
* @apiName post:/session/me/filters
|
|
* @apiVersion 0.0.1
|
|
* @apiGroup Session
|
|
* @apiDescription Create new custom filter for current user
|
|
*
|
|
* @apiParam (Header) {String} token jwtAccess token
|
|
* @apiParam (Body) {Object} filter New Filter to create
|
|
* @apiParam (Body) {String} filter.name Name of filter
|
|
* @apiParam (Body) {Object} filter.rules Rules to build this filter
|
|
*
|
|
* @apiSuccess {Object} res Response
|
|
* @apiSuccess {String} res.doc New Filter
|
|
*
|
|
* @apiUse SessionError
|
|
*/
|
|
router.post('/me/filters', services.filtersCreate)
|
|
|
|
return router
|
|
}
|