Skip to content

Commit

Permalink
feat(user): export login, username, & password
Browse files Browse the repository at this point in the history
  • Loading branch information
msimerson committed Feb 10, 2024
1 parent 2e20dff commit e5e970d
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 56 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ on:
- main
paths:
- package.json
release:
types: [ published ]

env:
CI: true
Expand Down
5 changes: 5 additions & 0 deletions lib/group.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,19 @@ const shared = require('./shared')

exports.group = Joi.object({
nt_group_id: Joi.number().integer().positive(),

parent_group_id: Joi.number().integer().greater(-1),

name: Joi.string()
.min(3)
.max(255)
.pattern(new RegExp("^[a-zA-Z0-9 _.@'-]+$"))
.pattern(new RegExp('^[a-zA-Z0-9]'))
.required(),

deleted: Joi.boolean(),

has_children: Joi.boolean(),

permission: shared.permission,
})
47 changes: 28 additions & 19 deletions lib/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,43 @@ const JoiPassword = Joi.extend(joiPasswordExtendCore)

const shared = require('./shared')

exports.username = Joi.string()
.min(3)
.max(50)
.pattern(new RegExp('^[a-zA-Z0-9 _.-]+$', ''))

exports.password = JoiPassword.string()
.min(8)
.max(30)
.minOfSpecialCharacters(2)
.minOfLowercase(2)
.minOfUppercase(2)
.minOfNumeric(2)
.doesNotInclude(['password', 'abc', '123', 'asdf'])

exports.login = Joi.object({
username: exports.username.required(),
password: exports.password.required(),
})

exports.user = Joi.object({
username: Joi.string()
.min(3)
.max(50)
.pattern(new RegExp('^[a-zA-Z0-9 _.-]+$', ''))
.required(),
nt_user_id: Joi.number().integer().positive(),
nt_group_id: Joi.number().integer().positive(),

first_name: Joi.string().min(1).required(),

last_name: Joi.string().min(1).required(),

email: Joi.string().lowercase().email({ minDomainSegments: 2 }).required(),
username: exports.username.required(),
password: exports.password,

password: JoiPassword.string()
.min(8)
.max(30)
.minOfSpecialCharacters(2)
.minOfLowercase(2)
.minOfUppercase(2)
.minOfNumeric(2)
.doesNotInclude(['password', 'abc', '123', 'asdf'])
.required(),
email: Joi.string().lowercase().email({ minDomainSegments: 2 }).required(),

nt_user_id: Joi.number().integer().positive(),
nt_group_id: Joi.number().integer().positive(),
is_admin: Joi.boolean(),

deleted: Joi.boolean(),
is_admin: Joi.boolean(),

nt_user_session: Joi.string(),
last_access: Joi.string(),

permission: shared.permission,
})
7 changes: 0 additions & 7 deletions lib/zone.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,10 @@ const shared = require('./shared')
exports.zone = Joi.object({
nt_group_id: Joi.number().integer().positive().required(),

// parent_group_id: Joi.number().integer().greater(-1),

zone: Joi.string()
.min(3)
.max(255)
.domain({ allowFullyQualified: true, tlds: false })
// .pattern(new RegExp("^[a-zA-Z0-9 _.@'-]+$"))
// .pattern(new RegExp('^[a-zA-Z0-9]'))
.required(),

description: Joi.string().empty(''),
Expand All @@ -34,7 +30,4 @@ exports.zone = Joi.object({
ttl: shared.ttl.required(),

deleted: Joi.boolean(),

// has_children: Joi.boolean(),
// permission: permission.permission,
})
19 changes: 0 additions & 19 deletions lib/zone_record.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,8 @@ exports.zone_record = Joi.object({
.min(1)
.max(255)
.domain({ minDomainSegments: 1, allowFullyQualified: false, tlds: false })
// // .pattern(new RegExp("^[a-zA-Z0-9 _.@'-]+$"))
// // .pattern(new RegExp('^[a-zA-Z0-9]'))
.required(),

// description: Joi.string().empty(''),

// mailaddr: Joi.string().empty(''),

// minimum: Joi.number().integer().greater(-1).max(2147483647).required(),

// nameservers: Joi.array().items(Joi.string()),

// refresh: Joi.number().integer().greater(-1).max(2147483647).required(),

// retry: Joi.number().integer().greater(-1).max(2147483647).required(),

// expire: Joi.number().integer().greater(-1).max(2147483647).required(),

ttl: shared.ttl.required(),

type: Joi.string()
Expand All @@ -40,7 +24,4 @@ exports.zone_record = Joi.object({
.required(),

// deleted: Joi.boolean(),

// has_children: Joi.boolean(),
// permission: permission.permission,
})
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@nictool/nt-validate",
"version": "0.6.0",
"version": "0.6.1",
"description": "NicTool Object Validation",
"main": "index.js",
"directories": {
Expand Down
10 changes: 0 additions & 10 deletions test/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,16 +110,6 @@ describe('user', function () {
assert.deepStrictEqual(value, testCase)
})

it('rejects missing', () => {
const testCase = JSON.parse(JSON.stringify(testUser))
delete testCase.password

const { error, value } = schema.validate(testCase)

assert.strictEqual(error.message, '"password" is required')
assert.deepStrictEqual(testCase, value)
})

it('rejects too short password', () => {
const testCase = JSON.parse(JSON.stringify(testUser))
testCase.password = 'ab12!@'
Expand Down

0 comments on commit e5e970d

Please sign in to comment.