diff options
author | mguetlein <martin.guetlein@gmail.com> | 2011-02-19 11:26:24 +0100 |
---|---|---|
committer | mguetlein <martin.guetlein@gmail.com> | 2011-02-19 11:26:24 +0100 |
commit | 1bac8bd64f9f703d7e20a65da0ffb05cb150e90f (patch) | |
tree | 2ecbb0e81abc2a54798f9f0aed2150cd2fb18917 | |
parent | 267b691017202c2fccf69dbeecfd4ed524a73fc2 (diff) |
add login functionality to webservices
-rw-r--r-- | lib/overwrite.rb | 4 | ||||
-rwxr-xr-x | lib/to-html.rb | 99 |
2 files changed, 66 insertions, 37 deletions
diff --git a/lib/overwrite.rb b/lib/overwrite.rb index 29a2860..b5c3942 100644 --- a/lib/overwrite.rb +++ b/lib/overwrite.rb @@ -29,7 +29,7 @@ error Exception do halt error.http_code,rep.to_rdfxml when /html/ content_type 'text/html' - halt error.http_code,(OpenTox.text_to_html rep.to_yaml) + halt error.http_code,(OpenTox.text_to_html rep.to_yaml, @subjectid) else content_type 'application/x-yaml' halt error.http_code,rep.to_yaml @@ -49,7 +49,7 @@ class Sinatra::Base halt code,task.to_yaml # PENDING differs from task-webservice when /html/ response['Content-Type'] = "text/html" - halt code,OpenTox.text_to_html(task.to_yaml) + halt code,OpenTox.text_to_html(task.to_yaml, @subjectid) else # default /uri-list/ response['Content-Type'] = "text/uri-list" halt code,task.uri+"\n" diff --git a/lib/to-html.rb b/lib/to-html.rb index 4de5ee6..1f30ca1 100755 --- a/lib/to-html.rb +++ b/lib/to-html.rb @@ -1,7 +1,6 @@ OT_LOGO = "http://opentox.informatik.uni-freiburg.de/ot-logo.png" - class String # encloses URI in text with with link tag @@ -25,29 +24,30 @@ module OpenTox # @param [optional,String] description general info # @param [optional,Array] post_params, array of arrays containing info on POST operation, see example # @return [String] html page - def self.text_to_html( text, related_links=nil, description=nil, post_params=nil ) + def self.text_to_html( text, subjectid=nil, related_links=nil, description=nil, post_params=nil ) # TODO add title as parameter title = nil #$sinatra.url_for($sinatra.request.env['PATH_INFO'], :full) if $sinatra - - html = <<EOF -<html> -EOF - html.chomp! + html = "<html>" html += "<title>"+title+"</title>" if title - html += <<EOF -<img src=" -EOF - html.chomp! - html += OT_LOGO - html += <<EOF -"> -<body> -EOF - html.chomp! - html += "<h3>Description</h3><pre><p>"+description.link_urls+"</p></pre>" if description - html += "<h3>Related links</h3><pre><p>"+related_links.link_urls+"</p></pre>" if related_links - if post_params + html += "<img src="+OT_LOGO+"><body>" + + if AA_SERVER + user = OpenTox::Authorization.get_user(subjectid) if subjectid + html += "<pre><p align=\"right\">" + unless user + html += "You are currently not logged in to "+$url_provider.url_for("",:full)+ + ", <a href="+$url_provider.url_for("/login",:full)+">login</a>" + else + html += "You are logged in as '#{user}' to "+$url_provider.url_for("",:full)+ + ", <a href="+$url_provider.url_for("/logout",:full)+">logout</a>" + end + html += " </p></pre>" + end + + html += "<h3>Description</h3><pre><p>"+description.link_urls+"</p></pre>" if description + html += "<h3>Related links</h3><pre><p>"+related_links.link_urls+"</p></pre>" if related_links + if post_params html += "<h3>POST parameters</h3>" count = 0 post_params.each do |p| @@ -59,23 +59,52 @@ EOF html += "</table></p></pre>" count += 1 end - end - html += "<h3>Content</h3>" if description || related_links - html += <<EOF -<pre> -<p style="padding:15px; border:10px solid #5D308A"> -EOF - html.chomp! - html += text.link_urls - html += <<EOF -</p> -</pre> -</body> -<html> -EOF + end + html += "<h3>Content</h3>" if description || related_links + html += "<pre><p style=\"padding:15px; border:10px solid \#5D308A\">" + html += text.link_urls + html += "</p></pre></body><html>" html end + def self.login( msg=nil ) + html = "<html><title>Login</title><img src="+OT_LOGO+"><body>" + html += "<form method='POST' action='"+$url_provider.url_for("/login",:full)+"'>" + html += "<pre><p style=\"padding:15px; border:10px solid \#5D308A\">" + html += msg+"\n\n" if msg + html += "Please login to "+$url_provider.url_for("",:full)+"\n\n" + html += "<table border=0>" + html += "<tr><td>user:</td><td><input type='text' name='user' size='15' /></td></tr>"+ + "<tr><td>password:</td><td><input type='password' name='password' size='15' /></td></tr>"+ + #"<input type=hidden name=back_to value="+back_to.to_s+">"+ + "<tr><td><input type='submit' value='Login' /></td></tr>" + html += "</table></p></pre></form></body><html>" + html + end +end + +get '/logout/?' do + response.set_cookie("subjectid",{:value=>nil}) + content_type "text/html" + content = "Sucessfully logged out from "+$url_provider.url_for("",:full) + OpenTox.text_to_html(content) +end + +get '/login/?' do + content_type "text/html" + OpenTox.login +end + +post '/login/?' do + subjectid = OpenTox::Authorization.authenticate(params[:user], params[:password]) + if (subjectid) + response.set_cookie("subjectid",{:value=>subjectid}) + content_type "text/html" + content = "Sucessfully logged in as '"+params[:user]+"' to "+$url_provider.url_for("",:full) + OpenTox.text_to_html(content,subjectid) + else + content_type "text/html" + OpenTox.login("Login failed, please try again") + end end -#puts OpenTox.text_to_html("bla")
\ No newline at end of file |