Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 28 additions & 15 deletions lib/index-api.js
Original file line number Diff line number Diff line change
Expand Up @@ -180,23 +180,36 @@ module.exports = function(config, auth, storage) {
return next( Error[422]('user/password is not found in request (npm issue?)') )
}
}
auth.add_user(req.body.name, req.body.password, function(err, user) {
if (err) {
if (err.status >= 400 && err.status < 500) {
// With npm registering is the same as logging in,
// and npm accepts only an 409 error.
// So, changing status code here.
return next( Error[409](err.message) )
}
return next(err)
// try to login first
auth.authenticate(req.body.name, req.body.password, function (err, user) {
if (!err) {
// user already exists, login
req.remote_user = user
res.status(201)
return next({
ok: "you are authenticated as '" + req.body.name + "'",
token: token,
})
}
// could not login, try to create user
auth.add_user(req.body.name, req.body.password, function(err, user) {
if (err) {
if (err.status >= 400 && err.status < 500) {
// With npm registering is the same as logging in,
// and npm accepts only an 409 error.
// So, changing status code here.
return next( Error[409](err.message) )
}
return next(err)
}

req.remote_user = user
res.status(201)
return next({
ok: "user '" + req.body.name + "' created",
//token: auth.issue_token(req.remote_user),
token: token,
req.remote_user = user
res.status(201)
return next({
ok: "user '" + req.body.name + "' created",
//token: auth.issue_token(req.remote_user),
token: token,
})
})
})
}
Expand Down