]>
Commit | Line | Data |
---|---|---|
69818c93 | 1 | import * as express from 'express' |
291e8d3e | 2 | import * as Promise from 'bluebird' |
69818c93 | 3 | |
6fcd19ba | 4 | import { pseudoRandomBytesPromise } from './core-utils' |
291e8d3e | 5 | import { CONFIG, database as db } from '../initializers' |
6fcd19ba | 6 | import { ResultList } from '../../shared' |
cbe2f7c3 | 7 | |
69818c93 | 8 | function badRequest (req: express.Request, res: express.Response, next: express.NextFunction) { |
a6fd2b30 C |
9 | res.type('json').status(400).end() |
10 | } | |
11 | ||
6fcd19ba C |
12 | function generateRandomString (size: number) { |
13 | return pseudoRandomBytesPromise(size).then(raw => raw.toString('hex')) | |
e4c87ec2 C |
14 | } |
15 | ||
154898b0 | 16 | interface FormatableToJSON { |
9e580054 | 17 | toFormatedJSON () |
154898b0 C |
18 | } |
19 | ||
20 | function getFormatedObjects<U, T extends FormatableToJSON> (objects: T[], objectsTotal: number) { | |
21 | const formatedObjects: U[] = [] | |
55fa55a9 | 22 | |
075f16ca | 23 | objects.forEach(object => { |
55fa55a9 C |
24 | formatedObjects.push(object.toFormatedJSON()) |
25 | }) | |
26 | ||
6fcd19ba | 27 | const res: ResultList<U> = { |
55fa55a9 C |
28 | total: objectsTotal, |
29 | data: formatedObjects | |
30 | } | |
6fcd19ba C |
31 | |
32 | return res | |
55fa55a9 C |
33 | } |
34 | ||
291e8d3e C |
35 | function isSignupAllowed () { |
36 | if (CONFIG.SIGNUP.ENABLED === false) { | |
37 | return Promise.resolve(false) | |
38 | } | |
39 | ||
40 | // No limit and signup is enabled | |
41 | if (CONFIG.SIGNUP.LIMIT === -1) { | |
42 | return Promise.resolve(true) | |
43 | } | |
44 | ||
45 | return db.User.countTotal().then(totalUsers => { | |
46 | return totalUsers < CONFIG.SIGNUP.LIMIT | |
47 | }) | |
48 | } | |
49 | ||
9f10b292 | 50 | // --------------------------------------------------------------------------- |
c45f7f84 | 51 | |
65fcc311 C |
52 | export { |
53 | badRequest, | |
65fcc311 | 54 | generateRandomString, |
291e8d3e C |
55 | getFormatedObjects, |
56 | isSignupAllowed | |
65fcc311 | 57 | } |