From de48efcf2a6b5fb096fd209b1efea482f743c19c Mon Sep 17 00:00:00 2001 From: Azul Date: Tue, 22 Jan 2013 12:02:18 +0100 Subject: some basic webfinger routes, controller, presenters, views --- users/app/controllers/webfinger_controller.rb | 15 +++++++++ users/app/helpers/users_helper.rb.orig | 47 +++++++++++++++++++++++++++ users/app/models/user.rb | 2 ++ users/app/views/emails/_email.html.haml.orig | 12 +++++++ users/app/views/webfinger/host_meta.erb | 11 +++++++ users/app/views/webfinger/search.erb | 6 ++++ 6 files changed, 93 insertions(+) create mode 100644 users/app/controllers/webfinger_controller.rb create mode 100644 users/app/helpers/users_helper.rb.orig create mode 100644 users/app/views/emails/_email.html.haml.orig create mode 100644 users/app/views/webfinger/host_meta.erb create mode 100644 users/app/views/webfinger/search.erb (limited to 'users/app') diff --git a/users/app/controllers/webfinger_controller.rb b/users/app/controllers/webfinger_controller.rb new file mode 100644 index 0000000..e86cd2d --- /dev/null +++ b/users/app/controllers/webfinger_controller.rb @@ -0,0 +1,15 @@ +class WebfingerController < ApplicationController + + layout false + + def host_meta + @host_meta = Webfinger::HostMetaPresenter.new(request) + end + + def search + username = params[:q].split('@')[0].to_s.downcase + + user = User.find_by_login(username) + @subject = Webfinger::UserPresenter.new(user, request) + end +end diff --git a/users/app/helpers/users_helper.rb.orig b/users/app/helpers/users_helper.rb.orig new file mode 100644 index 0000000..ed027d3 --- /dev/null +++ b/users/app/helpers/users_helper.rb.orig @@ -0,0 +1,47 @@ +module UsersHelper + + def user_form_with(partial, options = {}) + user_form(options) do |f| + options[:f] = f + render :partial => partial, + :layout => 'legend_and_submit', + :locals => options + end + end + + def user_form(options = {}) + simple_form_for @user, + :html => user_form_html_options(options), + :validate => true do |f| + yield f + end + end + + def user_form_html_options(options) + { :class => user_form_html_classes(options).join(" "), + :id => dom_id(@user, options[:legend]) + } + end + + def user_form_html_classes(options) + classes = %W/form-horizontal user form/ + classes << options[:legend] + classes << (@user.new_record? ? 'new' : 'edit') + classes.compact + end + +<<<<<<< HEAD + def user_field(field) + value = @user.send(field) + value = value.to_s(:long) if field.end_with? '_at' + value || 'not set' +======= + def wrapped(item, options = {}) + options[:as] ||= :div + content_tag options[:as], :class => dom_class(item), :id => dom_id(item) do + yield + end +>>>>>>> more flexible email partial + end + +end diff --git a/users/app/models/user.rb b/users/app/models/user.rb index 292fb13..eff7abd 100644 --- a/users/app/models/user.rb +++ b/users/app/models/user.rb @@ -9,6 +9,8 @@ class User < CouchRest::Model::Base property :email_forward, String, :accessible => true property :email_aliases, [LocalEmail] + property :public_key + validates :login, :password_salt, :password_verifier, :presence => true diff --git a/users/app/views/emails/_email.html.haml.orig b/users/app/views/emails/_email.html.haml.orig new file mode 100644 index 0000000..440870d --- /dev/null +++ b/users/app/views/emails/_email.html.haml.orig @@ -0,0 +1,12 @@ +<<<<<<< HEAD +%li.pull-right + %code= email + - if params[:action] == 'edit' +======= += wrapped(email, local_assigns) do + = email + - if local_assigns[:with].try(:include?, :delete) +>>>>>>> more flexible email partial + = link_to(user_email_alias_path(@user, email), :method => :delete) do + %i.icon-remove +.clearfix diff --git a/users/app/views/webfinger/host_meta.erb b/users/app/views/webfinger/host_meta.erb new file mode 100644 index 0000000..23b4039 --- /dev/null +++ b/users/app/views/webfinger/host_meta.erb @@ -0,0 +1,11 @@ + + + + <%= @host_meta.subject %> + + + + + diff --git a/users/app/views/webfinger/search.erb b/users/app/views/webfinger/search.erb new file mode 100644 index 0000000..0bcb7e5 --- /dev/null +++ b/users/app/views/webfinger/search.erb @@ -0,0 +1,6 @@ + + + acct:<%= @subject.email_identifier %> + "<%= user_url(@subject.subject) %>" + + -- cgit v1.2.3 From 0d1da13914675790daaf8def26f27017bf2d2a44 Mon Sep 17 00:00:00 2001 From: Azul Date: Tue, 22 Jan 2013 13:07:03 +0100 Subject: render 404 if needed --- users/app/controllers/webfinger_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'users/app') diff --git a/users/app/controllers/webfinger_controller.rb b/users/app/controllers/webfinger_controller.rb index e86cd2d..ac05934 100644 --- a/users/app/controllers/webfinger_controller.rb +++ b/users/app/controllers/webfinger_controller.rb @@ -8,8 +8,8 @@ class WebfingerController < ApplicationController def search username = params[:q].split('@')[0].to_s.downcase - - user = User.find_by_login(username) + user = User.find_by_login(username) || not_found @subject = Webfinger::UserPresenter.new(user, request) end + end -- cgit v1.2.3 From 31d18779fe1af0c55b72be7bc554302322025ee5 Mon Sep 17 00:00:00 2001 From: Azul Date: Tue, 22 Jan 2013 15:46:47 +0100 Subject: adding json jrd responses to webfinger --- users/app/controllers/webfinger_controller.rb | 3 +++ users/app/views/webfinger/search.erb | 6 ------ users/app/views/webfinger/search.xml.erb | 6 ++++++ 3 files changed, 9 insertions(+), 6 deletions(-) delete mode 100644 users/app/views/webfinger/search.erb create mode 100644 users/app/views/webfinger/search.xml.erb (limited to 'users/app') diff --git a/users/app/controllers/webfinger_controller.rb b/users/app/controllers/webfinger_controller.rb index ac05934..d3a4ad3 100644 --- a/users/app/controllers/webfinger_controller.rb +++ b/users/app/controllers/webfinger_controller.rb @@ -1,15 +1,18 @@ class WebfingerController < ApplicationController + respond_to :xml, :json layout false def host_meta @host_meta = Webfinger::HostMetaPresenter.new(request) + respond_with @host_meta end def search username = params[:q].split('@')[0].to_s.downcase user = User.find_by_login(username) || not_found @subject = Webfinger::UserPresenter.new(user, request) + respond_with @subject end end diff --git a/users/app/views/webfinger/search.erb b/users/app/views/webfinger/search.erb deleted file mode 100644 index 0bcb7e5..0000000 --- a/users/app/views/webfinger/search.erb +++ /dev/null @@ -1,6 +0,0 @@ - - - acct:<%= @subject.email_identifier %> - "<%= user_url(@subject.subject) %>" - - diff --git a/users/app/views/webfinger/search.xml.erb b/users/app/views/webfinger/search.xml.erb new file mode 100644 index 0000000..0bcb7e5 --- /dev/null +++ b/users/app/views/webfinger/search.xml.erb @@ -0,0 +1,6 @@ + + + acct:<%= @subject.email_identifier %> + "<%= user_url(@subject.subject) %>" + + -- cgit v1.2.3 From 493dea794285f0874a9235fe14e4350bd53c2a9f Mon Sep 17 00:00:00 2001 From: Azul Date: Tue, 22 Jan 2013 16:23:48 +0100 Subject: removed accidentaily commited files --- users/app/helpers/users_helper.rb.orig | 47 ---------------------------- users/app/views/emails/_email.html.haml.orig | 12 ------- 2 files changed, 59 deletions(-) delete mode 100644 users/app/helpers/users_helper.rb.orig delete mode 100644 users/app/views/emails/_email.html.haml.orig (limited to 'users/app') diff --git a/users/app/helpers/users_helper.rb.orig b/users/app/helpers/users_helper.rb.orig deleted file mode 100644 index ed027d3..0000000 --- a/users/app/helpers/users_helper.rb.orig +++ /dev/null @@ -1,47 +0,0 @@ -module UsersHelper - - def user_form_with(partial, options = {}) - user_form(options) do |f| - options[:f] = f - render :partial => partial, - :layout => 'legend_and_submit', - :locals => options - end - end - - def user_form(options = {}) - simple_form_for @user, - :html => user_form_html_options(options), - :validate => true do |f| - yield f - end - end - - def user_form_html_options(options) - { :class => user_form_html_classes(options).join(" "), - :id => dom_id(@user, options[:legend]) - } - end - - def user_form_html_classes(options) - classes = %W/form-horizontal user form/ - classes << options[:legend] - classes << (@user.new_record? ? 'new' : 'edit') - classes.compact - end - -<<<<<<< HEAD - def user_field(field) - value = @user.send(field) - value = value.to_s(:long) if field.end_with? '_at' - value || 'not set' -======= - def wrapped(item, options = {}) - options[:as] ||= :div - content_tag options[:as], :class => dom_class(item), :id => dom_id(item) do - yield - end ->>>>>>> more flexible email partial - end - -end diff --git a/users/app/views/emails/_email.html.haml.orig b/users/app/views/emails/_email.html.haml.orig deleted file mode 100644 index 440870d..0000000 --- a/users/app/views/emails/_email.html.haml.orig +++ /dev/null @@ -1,12 +0,0 @@ -<<<<<<< HEAD -%li.pull-right - %code= email - - if params[:action] == 'edit' -======= -= wrapped(email, local_assigns) do - = email - - if local_assigns[:with].try(:include?, :delete) ->>>>>>> more flexible email partial - = link_to(user_email_alias_path(@user, email), :method => :delete) do - %i.icon-remove -.clearfix -- cgit v1.2.3 From 40edf176142bd6092f13bd9f9fb72a2c69d4b052 Mon Sep 17 00:00:00 2001 From: Azul Date: Tue, 22 Jan 2013 16:45:01 +0100 Subject: fixing xml and adding json representation for host_meta --- users/app/views/webfinger/host_meta.erb | 11 ----------- users/app/views/webfinger/host_meta.xml.erb | 11 +++++++++++ 2 files changed, 11 insertions(+), 11 deletions(-) delete mode 100644 users/app/views/webfinger/host_meta.erb create mode 100644 users/app/views/webfinger/host_meta.xml.erb (limited to 'users/app') diff --git a/users/app/views/webfinger/host_meta.erb b/users/app/views/webfinger/host_meta.erb deleted file mode 100644 index 23b4039..0000000 --- a/users/app/views/webfinger/host_meta.erb +++ /dev/null @@ -1,11 +0,0 @@ - - - - <%= @host_meta.subject %> - - - - - diff --git a/users/app/views/webfinger/host_meta.xml.erb b/users/app/views/webfinger/host_meta.xml.erb new file mode 100644 index 0000000..37c9d1e --- /dev/null +++ b/users/app/views/webfinger/host_meta.xml.erb @@ -0,0 +1,11 @@ + + + + <%= @host_meta.subject %> + + + + + -- cgit v1.2.3 From efe76ee1d9badbad12b0cc42affb7b3d0572797c Mon Sep 17 00:00:00 2001 From: jessib Date: Tue, 22 Jan 2013 15:09:54 -0800 Subject: Rough way to allow user to paste in their key, but certainly we will want different display. --- users/app/models/user.rb | 2 +- users/app/views/users/_public_key_field.html.haml | 1 + users/app/views/users/edit.html.haml | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 users/app/views/users/_public_key_field.html.haml (limited to 'users/app') diff --git a/users/app/models/user.rb b/users/app/models/user.rb index eff7abd..80d49a3 100644 --- a/users/app/models/user.rb +++ b/users/app/models/user.rb @@ -9,7 +9,7 @@ class User < CouchRest::Model::Base property :email_forward, String, :accessible => true property :email_aliases, [LocalEmail] - property :public_key + property :public_key, :accessible => true validates :login, :password_salt, :password_verifier, :presence => true diff --git a/users/app/views/users/_public_key_field.html.haml b/users/app/views/users/_public_key_field.html.haml new file mode 100644 index 0000000..af88cbd --- /dev/null +++ b/users/app/views/users/_public_key_field.html.haml @@ -0,0 +1 @@ += f.input :public_key, :as => :text, :hint => t(:use_ascii_key), :input_html => {:class => "span5", :rows => 20} # will want to tweak this to be wide enough (maybe smaller text?) diff --git a/users/app/views/users/edit.html.haml b/users/app/views/users/edit.html.haml index 03088d8..d1c19ee 100644 --- a/users/app/views/users/edit.html.haml +++ b/users/app/views/users/edit.html.haml @@ -8,6 +8,7 @@ %legend=t :email_address Your email address is = render user.email_address, :as => :span + = user_form_with 'public_key_field', :legend => :public_key = user_form_with 'email_forward_field', :legend => :forward_email = user_form_with 'email_aliases', :legend => :add_email_alias = render 'tabs/tabs', :tabs => [:account, :email] -- cgit v1.2.3 From def5a00415ebced58bb0f7c1254f6cbedb27a23f Mon Sep 17 00:00:00 2001 From: Azul Date: Wed, 23 Jan 2013 09:23:18 +0100 Subject: make raising not found error less confusing --- users/app/controllers/webfinger_controller.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'users/app') diff --git a/users/app/controllers/webfinger_controller.rb b/users/app/controllers/webfinger_controller.rb index d3a4ad3..f28dd3e 100644 --- a/users/app/controllers/webfinger_controller.rb +++ b/users/app/controllers/webfinger_controller.rb @@ -10,7 +10,8 @@ class WebfingerController < ApplicationController def search username = params[:q].split('@')[0].to_s.downcase - user = User.find_by_login(username) || not_found + user = User.find_by_login(username) + raise RECORD_NOT_FOUND, 'User not found' unless user.present? @subject = Webfinger::UserPresenter.new(user, request) respond_with @subject end -- cgit v1.2.3 From b530279a144ad5fb35070952898c8e6ae3ba68ea Mon Sep 17 00:00:00 2001 From: Azul Date: Wed, 23 Jan 2013 09:39:50 +0100 Subject: not inluding link to key if there is none --- users/app/views/webfinger/search.xml.erb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'users/app') diff --git a/users/app/views/webfinger/search.xml.erb b/users/app/views/webfinger/search.xml.erb index 0bcb7e5..270383e 100644 --- a/users/app/views/webfinger/search.xml.erb +++ b/users/app/views/webfinger/search.xml.erb @@ -2,5 +2,7 @@ acct:<%= @subject.email_identifier %> "<%= user_url(@subject.subject) %>" - + <%- if @subject.key.present? %> + + <% end %> -- cgit v1.2.3 From 30f406de954bac1da5fef7cdd753c0af16f11051 Mon Sep 17 00:00:00 2001 From: Azul Date: Wed, 23 Jan 2013 13:13:41 +0100 Subject: added unit tests for user presenter changed the way the presenter works. Will need functional testing --- users/app/controllers/webfinger_controller.rb | 4 ++-- users/app/views/webfinger/search.xml.erb | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) (limited to 'users/app') diff --git a/users/app/controllers/webfinger_controller.rb b/users/app/controllers/webfinger_controller.rb index f28dd3e..8872802 100644 --- a/users/app/controllers/webfinger_controller.rb +++ b/users/app/controllers/webfinger_controller.rb @@ -12,8 +12,8 @@ class WebfingerController < ApplicationController username = params[:q].split('@')[0].to_s.downcase user = User.find_by_login(username) raise RECORD_NOT_FOUND, 'User not found' unless user.present? - @subject = Webfinger::UserPresenter.new(user, request) - respond_with @subject + @presenter = Webfinger::UserPresenter.new(user, request) + respond_with @presenter end end diff --git a/users/app/views/webfinger/search.xml.erb b/users/app/views/webfinger/search.xml.erb index 270383e..27f26d1 100644 --- a/users/app/views/webfinger/search.xml.erb +++ b/users/app/views/webfinger/search.xml.erb @@ -1,8 +1,10 @@ - acct:<%= @subject.email_identifier %> - "<%= user_url(@subject.subject) %>" - <%- if @subject.key.present? %> - + <%= @presenter.subject %> + <%- @presenter.aliases.each do |user_alias| %> + "<%= user_alias %>" + <% end %> + <%- @presenter.links.each do |rel, link| %> + type=<%=link[:type]%> href="<%= link[:key] %>"/> <% end %> -- cgit v1.2.3 From efb9f511f426b9d6f3af63608e77f80c4b823fb0 Mon Sep 17 00:00:00 2001 From: Azul Date: Wed, 23 Jan 2013 15:52:38 +0100 Subject: added a small test for HostMetaPresenter and using links hash in xml view --- users/app/views/webfinger/host_meta.xml.erb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'users/app') diff --git a/users/app/views/webfinger/host_meta.xml.erb b/users/app/views/webfinger/host_meta.xml.erb index 37c9d1e..cfcbcc0 100644 --- a/users/app/views/webfinger/host_meta.xml.erb +++ b/users/app/views/webfinger/host_meta.xml.erb @@ -3,9 +3,9 @@ <%= @host_meta.subject %> - - - + <%- @host_meta.links.each do |rel, link| %> + + <%- end %> -- cgit v1.2.3 From 9d053b6c9b61c68bf11f95bcb37631a518f1fba4 Mon Sep 17 00:00:00 2001 From: jessib Date: Thu, 24 Jan 2013 11:38:11 -0800 Subject: Removing aliases from webfinger as the link wouldn't work anyway, and don't want to leak ID information. --- users/app/views/webfinger/search.xml.erb | 3 --- 1 file changed, 3 deletions(-) (limited to 'users/app') diff --git a/users/app/views/webfinger/search.xml.erb b/users/app/views/webfinger/search.xml.erb index 27f26d1..7328552 100644 --- a/users/app/views/webfinger/search.xml.erb +++ b/users/app/views/webfinger/search.xml.erb @@ -1,9 +1,6 @@ <%= @presenter.subject %> - <%- @presenter.aliases.each do |user_alias| %> - "<%= user_alias %>" - <% end %> <%- @presenter.links.each do |rel, link| %> type=<%=link[:type]%> href="<%= link[:key] %>"/> <% end %> -- cgit v1.2.3