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