summaryrefslogtreecommitdiff
path: root/lib/chef_zero/endpoints/authenticate_user_endpoint.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chef_zero/endpoints/authenticate_user_endpoint.rb')
-rw-r--r--lib/chef_zero/endpoints/authenticate_user_endpoint.rb16
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/chef_zero/endpoints/authenticate_user_endpoint.rb b/lib/chef_zero/endpoints/authenticate_user_endpoint.rb
index f2c26a0..454485e 100644
--- a/lib/chef_zero/endpoints/authenticate_user_endpoint.rb
+++ b/lib/chef_zero/endpoints/authenticate_user_endpoint.rb
@@ -10,14 +10,18 @@ module ChefZero
name = request_json['name']
password = request_json['password']
begin
- user = data_store.get(request.rest_path[0..1] + ['users', name])
- verified = JSON.parse(user, :create_additions => false)['password'] == password
- rescue DataStore::DataNotFoundError
- verified = false
+ user = data_store.get(request.rest_path[0..-2] + ['users', name])
+ rescue ChefZero::DataStore::DataNotFoundError
+ raise RestErrorResponse.new(401, "Bad username or password")
+ end
+ user = JSON.parse(user, :create_additions => false)
+ user = DataNormalizer.normalize_user(user, name)
+ if user['password'] != password
+ raise RestErrorResponse.new(401, "Bad username or password")
end
json_response(200, {
- 'name' => name,
- 'verified' => !!verified
+ 'status' => 'linked',
+ 'user' => user
})
end
end