apply patch from TomH for #477 and dont require http auth on GET to the API.
This commit is contained in:
parent
494975aa8b
commit
40c7e0f9aa
2 changed files with 45 additions and 30 deletions
|
@ -11,31 +11,33 @@ class ApplicationController < ActionController::Base
|
|||
end
|
||||
|
||||
def authorize(realm='Web Password', errormessage="Couldn't authenticate you")
|
||||
username, passwd = get_auth_data # parse from headers
|
||||
# authenticate per-scheme
|
||||
if username.nil?
|
||||
@user = nil # no authentication provided - perhaps first connect (client should retry after 401)
|
||||
elsif username == 'token'
|
||||
@user = User.authenticate_token(passwd) # preferred - random token for user from db, passed in basic auth
|
||||
else
|
||||
@user = User.authenticate(username, passwd) # basic auth
|
||||
unless request.get?
|
||||
username, passwd = get_auth_data # parse from headers
|
||||
# authenticate per-scheme
|
||||
if username.nil?
|
||||
@user = nil # no authentication provided - perhaps first connect (client should retry after 401)
|
||||
elsif username == 'token'
|
||||
@user = User.authenticate_token(passwd) # preferred - random token for user from db, passed in basic auth
|
||||
else
|
||||
@user = User.authenticate(username, passwd) # basic auth
|
||||
end
|
||||
|
||||
# handle authenticate pass/fail
|
||||
if @user
|
||||
# user exists and password is correct ... horray!
|
||||
if @user.methods.include? 'lastlogin' # note last login
|
||||
@session['lastlogin'] = user.lastlogin
|
||||
@user.last.login = Time.now
|
||||
@user.save()
|
||||
@session["User.id"] = @user.id
|
||||
end
|
||||
else
|
||||
# no auth, the user does not exist or the password was wrong
|
||||
response.headers["Status"] = "Unauthorized"
|
||||
response.headers["WWW-Authenticate"] = "Basic realm=\"#{realm}\""
|
||||
render_text(errormessage, 401) # :unauthorized
|
||||
end
|
||||
end
|
||||
|
||||
# handle authenticate pass/fail
|
||||
if @user
|
||||
# user exists and password is correct ... horray!
|
||||
if @user.methods.include? 'lastlogin' # note last login
|
||||
@session['lastlogin'] = user.lastlogin
|
||||
@user.last.login = Time.now
|
||||
@user.save()
|
||||
@session["User.id"] = @user.id
|
||||
end
|
||||
else
|
||||
# no auth, the user does not exist or the password was wrong
|
||||
response.headers["Status"] = "Unauthorized"
|
||||
response.headers["WWW-Authenticate"] = "Basic realm=\"#{realm}\""
|
||||
render_text(errormessage, 401) # :unauthorized
|
||||
end
|
||||
end
|
||||
|
||||
# Report and error to the user
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue