lib/helper.rb in opentox-ruby-2.1.0 vs lib/helper.rb in opentox-ruby-3.0.0
- old
+ new
@@ -1,7 +1,37 @@
helpers do
+
+ def login(username, password)
+ logout
+ session[:subjectid] = OpenTox::Authorization.authenticate(username, password)
+ #LOGGER.debug "ToxCreate login user #{username} with subjectid: " + session[:subjectid].to_s
+ if session[:subjectid] != nil
+ session[:username] = username
+ return session[:subjectid]
+ else
+ session[:username] = ""
+ return nil
+ end
+ end
+ def logout
+ if session[:subjectid] != nil
+ session[:subjectid] = nil
+ session[:username] = ""
+ return true
+ end
+ return false
+ end
+
+ def logged_in()
+ return true if !AA_SERVER
+ if session[:subjectid] != nil
+ return OpenTox::Authorization.is_token_valid(session[:subjectid])
+ end
+ return false
+ end
+
# Authentification
def protected!(subjectid)
if env["session"]
unless authorized?(subjectid)
flash[:notice] = "You don't have access to this section: "
@@ -28,13 +58,13 @@
#cleans URI from querystring and file-extension. Sets port 80 to emptystring
# @param [String] uri
def clean_uri(uri)
uri = uri.sub(" ", "%20") #dirty hacks => to fix
uri = uri[0,uri.index("InChI=")] if uri.index("InChI=")
-
out = URI.parse(uri)
out.path = out.path[0, out.path.length - (out.path.reverse.rindex(/\/{1}\d+\/{1}/))] if out.path.index(/\/{1}\d+\/{1}/) #cuts after /id/ for a&a
+ out.path = out.path.split('.').first #cut extension
port = (out.scheme=="http" && out.port==80)||(out.scheme=="https" && out.port==443) ? "" : ":#{out.port.to_s}"
"#{out.scheme}://#{out.host}#{port}#{out.path.chomp("/")}" #"
end
#unprotected uri for login
@@ -54,19 +84,20 @@
begin
subjectid = nil
subjectid = session[:subjectid] if session[:subjectid]
subjectid = params[:subjectid] if params[:subjectid] and !subjectid
subjectid = request.env['HTTP_SUBJECTID'] if request.env['HTTP_SUBJECTID'] and !subjectid
- subjectid = request.cookies["subjectid"] unless subjectid
# see http://rack.rubyforge.org/doc/SPEC.html
subjectid = CGI.unescape(subjectid) if subjectid.include?("%23")
@subjectid = subjectid
rescue
- subjectid = nil
+ @subjectid = nil
end
end
def get_extension
+ @accept = request.env['HTTP_ACCEPT']
+ @accept = 'application/rdf+xml' if @accept == '*/*' or @accept == '' or @accept.nil?
extension = File.extname(request.path_info)
unless extension.empty?
case extension.gsub(".","")
when "html"
@accept = 'text/html'
@@ -76,21 +107,23 @@
@accept = 'text/csv'
when "rdfxml"
@accept = 'application/rdf+xml'
when "xls"
@accept = 'application/ms-excel'
+ when "sdf"
+ @accept = 'chemical/x-mdl-sdfile'
when "css"
@accept = 'text/css'
else
# raise OpenTox::NotFoundError.new "File format #{extension} not supported."
end
end
end
end
before do
- @subjectid = get_subjectid()
- @accept = get_extension()
+ get_subjectid()
+ get_extension()
unless !AA_SERVER or login_requests or CONFIG[:authorization][:free_request].include?(env['REQUEST_METHOD'])
protected!(@subjectid)
end
end