users.ts 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import validator from 'validator'
  2. import { UserRole } from '../../../shared'
  3. import { CONSTRAINTS_FIELDS, NSFW_POLICY_TYPES } from '../../initializers/constants'
  4. import { exists, isArray, isBooleanValid, isFileValid } from './misc'
  5. import { values } from 'lodash'
  6. const USERS_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.USERS
  7. function isUserPasswordValid (value: string) {
  8. return validator.isLength(value, USERS_CONSTRAINTS_FIELDS.PASSWORD)
  9. }
  10. function isUserVideoQuotaValid (value: string) {
  11. return exists(value) && validator.isInt(value + '', USERS_CONSTRAINTS_FIELDS.VIDEO_QUOTA)
  12. }
  13. function isUserVideoQuotaDailyValid (value: string) {
  14. return exists(value) && validator.isInt(value + '', USERS_CONSTRAINTS_FIELDS.VIDEO_QUOTA_DAILY)
  15. }
  16. function isUserUsernameValid (value: string) {
  17. const max = USERS_CONSTRAINTS_FIELDS.USERNAME.max
  18. const min = USERS_CONSTRAINTS_FIELDS.USERNAME.min
  19. return exists(value) && validator.matches(value, new RegExp(`^[a-z0-9._]{${min},${max}}$`))
  20. }
  21. function isUserDisplayNameValid (value: string) {
  22. return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.NAME))
  23. }
  24. function isUserDescriptionValid (value: string) {
  25. return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.DESCRIPTION))
  26. }
  27. function isUserEmailVerifiedValid (value: any) {
  28. return isBooleanValid(value)
  29. }
  30. const nsfwPolicies = values(NSFW_POLICY_TYPES)
  31. function isUserNSFWPolicyValid (value: any) {
  32. return exists(value) && nsfwPolicies.indexOf(value) !== -1
  33. }
  34. function isUserWebTorrentEnabledValid (value: any) {
  35. return isBooleanValid(value)
  36. }
  37. function isUserVideosHistoryEnabledValid (value: any) {
  38. return isBooleanValid(value)
  39. }
  40. function isUserAutoPlayVideoValid (value: any) {
  41. return isBooleanValid(value)
  42. }
  43. function isUserVideoLanguages (value: any) {
  44. return value === null || (isArray(value) && value.length < CONSTRAINTS_FIELDS.USERS.VIDEO_LANGUAGES.max)
  45. }
  46. function isUserAdminFlagsValid (value: any) {
  47. return exists(value) && validator.isInt('' + value)
  48. }
  49. function isUserBlockedValid (value: any) {
  50. return isBooleanValid(value)
  51. }
  52. function isUserAutoPlayNextVideoValid (value: any) {
  53. return isBooleanValid(value)
  54. }
  55. function isUserAutoPlayNextVideoPlaylistValid (value: any) {
  56. return isBooleanValid(value)
  57. }
  58. function isNoInstanceConfigWarningModal (value: any) {
  59. return isBooleanValid(value)
  60. }
  61. function isNoWelcomeModal (value: any) {
  62. return isBooleanValid(value)
  63. }
  64. function isUserBlockedReasonValid (value: any) {
  65. return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.BLOCKED_REASON))
  66. }
  67. function isUserRoleValid (value: any) {
  68. return exists(value) && validator.isInt('' + value) && UserRole[value] !== undefined
  69. }
  70. const avatarMimeTypes = CONSTRAINTS_FIELDS.ACTORS.AVATAR.EXTNAME
  71. .map(v => v.replace('.', ''))
  72. .join('|')
  73. const avatarMimeTypesRegex = `image/(${avatarMimeTypes})`
  74. function isAvatarFile (files: { [ fieldname: string ]: Express.Multer.File[] } | Express.Multer.File[]) {
  75. return isFileValid(files, avatarMimeTypesRegex, 'avatarfile', CONSTRAINTS_FIELDS.ACTORS.AVATAR.FILE_SIZE.max)
  76. }
  77. // ---------------------------------------------------------------------------
  78. export {
  79. isUserVideosHistoryEnabledValid,
  80. isUserBlockedValid,
  81. isUserPasswordValid,
  82. isUserVideoLanguages,
  83. isUserBlockedReasonValid,
  84. isUserRoleValid,
  85. isUserVideoQuotaValid,
  86. isUserVideoQuotaDailyValid,
  87. isUserUsernameValid,
  88. isUserAdminFlagsValid,
  89. isUserEmailVerifiedValid,
  90. isUserNSFWPolicyValid,
  91. isUserWebTorrentEnabledValid,
  92. isUserAutoPlayVideoValid,
  93. isUserAutoPlayNextVideoValid,
  94. isUserAutoPlayNextVideoPlaylistValid,
  95. isUserDisplayNameValid,
  96. isUserDescriptionValid,
  97. isNoInstanceConfigWarningModal,
  98. isNoWelcomeModal,
  99. isAvatarFile
  100. }