Do not create a user with the same username than another actor name
This commit is contained in:
parent
6387f320bf
commit
2ef6a0635c
2 changed files with 33 additions and 0 deletions
|
@ -21,6 +21,7 @@ import { CONFIG, CONSTRAINTS_FIELDS } from '../../initializers'
|
||||||
import { Redis } from '../../lib/redis'
|
import { Redis } from '../../lib/redis'
|
||||||
import { UserModel } from '../../models/account/user'
|
import { UserModel } from '../../models/account/user'
|
||||||
import { areValidationErrors } from './utils'
|
import { areValidationErrors } from './utils'
|
||||||
|
import { ActorModel } from '../../models/activitypub/actor'
|
||||||
|
|
||||||
const usersAddValidator = [
|
const usersAddValidator = [
|
||||||
body('username').custom(isUserUsernameValid).withMessage('Should have a valid username (lowercase alphanumeric characters)'),
|
body('username').custom(isUserUsernameValid).withMessage('Should have a valid username (lowercase alphanumeric characters)'),
|
||||||
|
@ -271,6 +272,14 @@ async function checkUserNameOrEmailDoesNotAlreadyExist (username: string, email:
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const actor = await ActorModel.loadLocalByName(username)
|
||||||
|
if (actor) {
|
||||||
|
res.status(409)
|
||||||
|
.send({ error: 'Another actor (account/channel) with this name already exists.' })
|
||||||
|
.end()
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -179,6 +179,18 @@ describe('Test users API validators', function () {
|
||||||
await makePostBodyRequest({ url: server.url, path, token: server.accessToken, fields })
|
await makePostBodyRequest({ url: server.url, path, token: server.accessToken, fields })
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('Should fail with a "peertube" username', async function () {
|
||||||
|
const fields = immutableAssign(baseCorrectParams, { username: 'peertube' })
|
||||||
|
|
||||||
|
await makePostBodyRequest({
|
||||||
|
url: server.url,
|
||||||
|
path,
|
||||||
|
token: server.accessToken,
|
||||||
|
fields,
|
||||||
|
statusCodeExpected: 409
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
it('Should succeed with the correct params', async function () {
|
it('Should succeed with the correct params', async function () {
|
||||||
await makePostBodyRequest({
|
await makePostBodyRequest({
|
||||||
url: server.url,
|
url: server.url,
|
||||||
|
@ -493,6 +505,18 @@ describe('Test users API validators', function () {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('Should fail with a "peertube" username', async function () {
|
||||||
|
const fields = immutableAssign(baseCorrectParams, { username: 'peertube' })
|
||||||
|
|
||||||
|
await makePostBodyRequest({
|
||||||
|
url: server.url,
|
||||||
|
path: registrationPath,
|
||||||
|
token: server.accessToken,
|
||||||
|
fields,
|
||||||
|
statusCodeExpected: 409
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
it('Should fail if we register a user with the same email', async function () {
|
it('Should fail if we register a user with the same email', async function () {
|
||||||
const fields = immutableAssign(baseCorrectParams, { email: 'admin1@example.com' })
|
const fields = immutableAssign(baseCorrectParams, { email: 'admin1@example.com' })
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue