social_stream-oauth2_server 2.1.1 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +1 -6
- data/app/assets/images/step_1.png +0 -0
- data/app/assets/images/step_2.png +0 -0
- data/app/assets/images/step_3.png +0 -0
- data/app/assets/javascripts/social_stream/site_client.js +27 -0
- data/app/assets/stylesheets/social_stream/oauth2_server/applications/layout/_applications-oauth2server.css.sass +0 -5
- data/app/assets/stylesheets/social_stream/oauth2_server/create/layout/_create-oauth2server.css.sass +3 -5
- data/app/assets/stylesheets/social_stream/oauth2_server/show/layout/_show-oauth2server.css.sass +8 -6
- data/app/controllers/site/clients_controller.rb +17 -41
- data/app/decorators/social_stream/base/relation_decorator.rb +2 -0
- data/app/decorators/social_stream/base/user_decorator.rb +1 -20
- data/app/models/relation/manager.rb +1 -10
- data/app/models/site/client.rb +4 -2
- data/app/views/site/clients/_destroy.html.erb +11 -0
- data/app/views/site/clients/_edit.html.erb +9 -2
- data/app/views/site/clients/_edit_step_2.html.erb +6 -6
- data/app/views/site/clients/_edit_step_3.html.erb +8 -6
- data/app/views/site/clients/_form.html.erb +11 -11
- data/app/views/site/clients/_list.html.erb +23 -11
- data/app/views/site/clients/edit.html.erb +1 -1
- data/app/views/site/clients/index.html.erb +9 -40
- data/app/views/site/clients/show.html.erb +66 -68
- data/config/locales/en.yml +19 -0
- data/config/locales/es.yml +23 -4
- data/config/locales/zh.yml +32 -13
- data/config/routes.rb +3 -1
- data/lib/social_stream/oauth2_server.rb +4 -1
- data/lib/social_stream/oauth2_server/ability.rb +1 -1
- data/lib/social_stream/oauth2_server/models/user.rb +18 -0
- data/lib/social_stream/oauth2_server/version.rb +1 -1
- data/social_stream-oauth2_server.gemspec +1 -1
- data/spec/controllers/site_clients_controller_authorization_spec.rb +7 -0
- metadata +8 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f974cd2ca225c2e81f96ebfe5705847aa8f79db
|
4
|
+
data.tar.gz: 767419bbe1194902609edfdea7d5502968c4882c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 047a94b500d2e5b14fde61acc72d5978babf0d9fa5c67c6c7cb2a856449cb9686dead638ee8a86ec0911bfd14567bc2e790ef7a623ee7c87e3c464c15ed11ec9
|
7
|
+
data.tar.gz: 57c1b9cf96589fcf8fe39790460e8ac712b65e194af414d69a6b0e2ed24455ee48201e12743b8a26a86b6f2da222180b91ee27a2006726431e880cf0e3100b4b
|
data/Rakefile
CHANGED
@@ -3,12 +3,7 @@ require 'bundler/gem_tasks'
|
|
3
3
|
|
4
4
|
require 'rdoc/task'
|
5
5
|
|
6
|
-
|
7
|
-
require 'rspec/core/rake_task'
|
8
|
-
|
9
|
-
RSpec::Core::RakeTask.new(:spec)
|
10
|
-
|
11
|
-
task :default => :spec
|
6
|
+
task :default => :rdoc
|
12
7
|
|
13
8
|
Rake::RDocTask.new(:rdoc) do |rdoc|
|
14
9
|
rdoc.rdoc_dir = 'rdoc'
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,4 +1,5 @@
|
|
1
1
|
//= require social_stream/callback
|
2
|
+
//= require social_stream/flash
|
2
3
|
|
3
4
|
SocialStream.SiteClient = (function(SS, $, undefined) {
|
4
5
|
var callback = new SS.Callback();
|
@@ -7,8 +8,34 @@ SocialStream.SiteClient = (function(SS, $, undefined) {
|
|
7
8
|
$('.new_site_client-modal-link').attr('href', '#new_site_client-modal');
|
8
9
|
};
|
9
10
|
|
11
|
+
var initRefreshButton = function() {
|
12
|
+
$('form.site-client-secret').submit(sendSecretRefresh);
|
13
|
+
};
|
14
|
+
|
15
|
+
var sendSecretRefresh = function(e) {
|
16
|
+
var form = $(e.target);
|
17
|
+
|
18
|
+
e.preventDefault();
|
19
|
+
|
20
|
+
$.ajax({
|
21
|
+
url: form.attr('action'),
|
22
|
+
method: form.attr('method'),
|
23
|
+
dataType: 'json',
|
24
|
+
success: function(data) {
|
25
|
+
SS.Flash.success(I18n.t('site.client.oauth.secret.refreshed'));
|
26
|
+
|
27
|
+
$('span.site-client-secret').html(data.secret).effect('highlight', {}, 3000);
|
28
|
+
},
|
29
|
+
error: function(jqXHR, textStatus) {
|
30
|
+
SS.Flash.error(textStatus);
|
31
|
+
}
|
32
|
+
});
|
33
|
+
};
|
34
|
+
|
10
35
|
callback.register('index', initNewModal);
|
11
36
|
|
37
|
+
callback.register('show', initRefreshButton);
|
38
|
+
|
12
39
|
return callback.extend({
|
13
40
|
});
|
14
41
|
|
data/app/assets/stylesheets/social_stream/oauth2_server/show/layout/_show-oauth2server.css.sass
CHANGED
@@ -37,12 +37,14 @@
|
|
37
37
|
padding: 0 2.5%
|
38
38
|
margin-bottom: 30px
|
39
39
|
display: inline-block
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
40
|
+
header
|
41
|
+
margin-top: -37px
|
42
|
+
h4
|
43
|
+
@include clearfix
|
44
|
+
margin-bottom: 4px
|
45
|
+
margin-left: -2.5%
|
46
|
+
a
|
47
|
+
font-size: 13px
|
46
48
|
.soften
|
47
49
|
margin-bottom: 0px
|
48
50
|
.content
|
@@ -1,60 +1,36 @@
|
|
1
1
|
class Site::ClientsController < ApplicationController
|
2
|
-
|
2
|
+
include SocialStream::Controllers::Subjects
|
3
|
+
include SocialStream::Controllers::Authorship
|
3
4
|
|
4
|
-
before_filter :
|
5
|
+
before_filter :authenticate_user!
|
5
6
|
|
6
7
|
load_and_authorize_resource
|
7
8
|
|
8
|
-
def index
|
9
|
-
@clients = current_subject.managed_site_clients
|
10
|
-
end
|
11
|
-
|
12
9
|
def create
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
redirect_to edit_site_client_path(@client, step: 2)
|
19
|
-
}
|
20
|
-
end
|
21
|
-
else
|
22
|
-
respond_to do |format|
|
23
|
-
format.html { render :new }
|
24
|
-
end
|
10
|
+
create! do |success, error|
|
11
|
+
success.html {
|
12
|
+
redirect_to polymorphic_path(resource, action: :edit, step: 2)
|
13
|
+
}
|
14
|
+
error.html { render :new }
|
25
15
|
end
|
26
16
|
end
|
27
17
|
|
28
|
-
|
29
|
-
|
30
|
-
|
18
|
+
# Refresh the site client token
|
19
|
+
def update_secret
|
20
|
+
resource.refresh_secret!
|
31
21
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
if @client.update_attributes params[:client]
|
36
|
-
respond_to do |format|
|
37
|
-
format.html { redirect_to @client }
|
38
|
-
end
|
39
|
-
else
|
40
|
-
respond_to do |format|
|
41
|
-
format.html { render :edit }
|
42
|
-
end
|
22
|
+
respond_to do |format|
|
23
|
+
format.json { render json: { secret: resource.secret } }
|
43
24
|
end
|
44
25
|
end
|
45
26
|
|
46
27
|
def destroy
|
47
|
-
|
48
|
-
|
49
|
-
redirect_to home_path
|
28
|
+
destroy! { :home }
|
50
29
|
end
|
51
30
|
|
52
|
-
|
31
|
+
protected
|
53
32
|
|
54
|
-
def
|
55
|
-
|
56
|
-
params[:site_client][:author_id] = current_subject.actor_id
|
57
|
-
params[:site_client][:user_author_id] = current_user.actor_id
|
58
|
-
params[:site_client][:owner_id] = current_subject.actor_id
|
33
|
+
def collection
|
34
|
+
current_subject.managed_site_clients
|
59
35
|
end
|
60
36
|
end
|
@@ -1,20 +1 @@
|
|
1
|
-
User.
|
2
|
-
include SocialStream::Oauth2Server::Models::User
|
3
|
-
|
4
|
-
def as_json_with_client options = {}
|
5
|
-
hash = as_json_without_client options
|
6
|
-
|
7
|
-
if options[:client] && !options[:client].is_a?(User)
|
8
|
-
hash['roles'] = options[:client].contact_to!(self).relations.map{ |r|
|
9
|
-
{
|
10
|
-
id: r.id,
|
11
|
-
name: r.name
|
12
|
-
}
|
13
|
-
}
|
14
|
-
end
|
15
|
-
|
16
|
-
hash
|
17
|
-
end
|
18
|
-
|
19
|
-
alias_method_chain :as_json, :client
|
20
|
-
end
|
1
|
+
User.send :include, SocialStream::Oauth2Server::Models::User
|
@@ -1,19 +1,10 @@
|
|
1
1
|
# Owner of client sites
|
2
2
|
class Relation::Manager < Relation::Single
|
3
|
-
PERMISSIONS =
|
4
|
-
[
|
5
|
-
[ 'manage', nil ],
|
6
|
-
[ 'manage', 'relation/custom' ],
|
7
|
-
[ 'manage', 'contact' ]
|
8
|
-
]
|
3
|
+
PERMISSIONS = SocialStream.available_permissions['site/client']
|
9
4
|
|
10
5
|
class << self
|
11
6
|
def create_activity?
|
12
7
|
false
|
13
8
|
end
|
14
9
|
end
|
15
|
-
|
16
|
-
def available_permissions
|
17
|
-
Permission.instances PERMISSIONS
|
18
|
-
end
|
19
10
|
end
|
data/app/models/site/client.rb
CHANGED
@@ -0,0 +1,11 @@
|
|
1
|
+
<div id="destroy_site_client" class="accordion-group">
|
2
|
+
<header class="accordion-heading">
|
3
|
+
<h5>
|
4
|
+
<%= link_to t("site.client.destroy.title"), "javascript:void(0);", class: 'accordion-toggle', "data-toggle" => 'collapse', "data-parent" => "#site_client-accordion", "data-target" => "#destroy_site_client-content" %>
|
5
|
+
</h5>
|
6
|
+
</header>
|
7
|
+
|
8
|
+
<div class="content collapse" id="destroy_site_client-content">
|
9
|
+
<%= link_to t("site.client.destroy.link"), resource, confirm: t("site.client.destroy.confirm"), method: :delete %>
|
10
|
+
</div>
|
11
|
+
</div>
|
@@ -1,6 +1,13 @@
|
|
1
|
-
|
1
|
+
<section class="edit_form">
|
2
|
+
<%= render partial: 'form' %>
|
3
|
+
</section>
|
2
4
|
|
3
5
|
<section class="site_client_roles">
|
4
6
|
<%= render partial: 'relation/customs/index',
|
5
|
-
locals: { subject:
|
7
|
+
locals: { subject: resource } %>
|
8
|
+
</section>
|
9
|
+
|
10
|
+
<section class="delete">
|
11
|
+
<%= render partial: 'destroy' %>
|
6
12
|
</section>
|
13
|
+
|
@@ -1,11 +1,11 @@
|
|
1
1
|
<%= image_tag 'step_2.png' %>
|
2
2
|
|
3
|
-
<section class="
|
4
|
-
<
|
3
|
+
<section class="create_logo_app">
|
4
|
+
<h4>Set the application's logo</h4>
|
5
5
|
|
6
|
-
<%= render partial: 'avatars/form',
|
7
|
-
|
8
|
-
|
6
|
+
<%= render partial: 'avatars/form',
|
7
|
+
object: resource,
|
8
|
+
as: :avatarable %>
|
9
9
|
|
10
|
-
<%= link_to "Next",
|
10
|
+
<%= link_to "Next", polymorphic_path(resource, action: 'edit', step: 3), class: "next-step" %>
|
11
11
|
</section>
|
@@ -1,10 +1,12 @@
|
|
1
1
|
<%= image_tag 'step_3.png' %>
|
2
2
|
|
3
|
-
<
|
3
|
+
<section class="new_app">
|
4
|
+
<h4>Manage roles and permissions</h4>
|
4
5
|
|
5
|
-
<section class="site_client_roles">
|
6
|
-
|
7
|
-
|
8
|
-
</section>
|
6
|
+
<section class="site_client_roles">
|
7
|
+
<%= render partial: 'relation/customs/index',
|
8
|
+
locals: { subject: resource } %>
|
9
|
+
</section>
|
9
10
|
|
10
|
-
<%= link_to 'Finish',
|
11
|
+
<%= link_to 'Finish', resource, class: "next-step" %>
|
12
|
+
</section>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= form_for(
|
1
|
+
<%= form_for(begin; resource; rescue ActiveRecord::RecordNotFound; end || resource_class.new) do |f| %>
|
2
2
|
|
3
3
|
<% if f.object.errors.any? %>
|
4
4
|
<div id="error_explanation" class="alert alert-error">
|
@@ -14,26 +14,26 @@
|
|
14
14
|
<% end %>
|
15
15
|
|
16
16
|
<section id="site_client_form">
|
17
|
-
<
|
17
|
+
<div class="name">
|
18
18
|
<%= f.label :name %>
|
19
19
|
<%= f.text_field :name %>
|
20
|
-
</
|
20
|
+
</div>
|
21
21
|
|
22
|
-
<
|
22
|
+
<div class="description">
|
23
23
|
<%= f.label :description %>
|
24
24
|
<%= f.text_area :description %>
|
25
|
-
</
|
25
|
+
</div>
|
26
26
|
|
27
|
-
<
|
27
|
+
<div class="url">
|
28
28
|
<%= f.label :url %>
|
29
29
|
<%= f.text_area :url %>
|
30
|
-
</
|
30
|
+
</div>
|
31
31
|
|
32
|
-
<
|
32
|
+
<div class="callback_url">
|
33
33
|
<%= f.label :callback_url %>
|
34
34
|
<%= f.text_area :callback_url %>
|
35
|
-
</
|
36
|
-
|
37
|
-
<%= f.submit %>
|
35
|
+
</div>
|
38
36
|
</section>
|
37
|
+
<%= f.submit :class => "next-step" %>
|
38
|
+
|
39
39
|
<% end %>
|
@@ -2,19 +2,31 @@
|
|
2
2
|
<ul>
|
3
3
|
<% list.each do |client| %>
|
4
4
|
<li>
|
5
|
-
<%=
|
5
|
+
<%= link_to client do %>
|
6
|
+
<%= image_tag client.logo.url(:small) %>
|
7
|
+
<% end %>
|
6
8
|
|
7
|
-
<div class="
|
8
|
-
|
9
|
+
<div class="data">
|
10
|
+
<div class="name">
|
11
|
+
<%= link_to client.name, client %>
|
12
|
+
</div>
|
13
|
+
<div class="url">
|
14
|
+
<%= link_to client.url, client.url, target: '_blank' %>
|
15
|
+
</div>
|
9
16
|
</div>
|
10
|
-
<div class="
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
</
|
17
|
-
|
17
|
+
<div class="team">
|
18
|
+
<div class="users">
|
19
|
+
<span>
|
20
|
+
5
|
21
|
+
</span>
|
22
|
+
users
|
23
|
+
</div>
|
24
|
+
<div class="auth">
|
25
|
+
<span>
|
26
|
+
15
|
27
|
+
</span>
|
28
|
+
authorized
|
29
|
+
</div>
|
18
30
|
</div>
|
19
31
|
<hr class="soften">
|
20
32
|
</li>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
<%= render partial: 'toolbar/home' %>
|
4
4
|
|
5
|
-
<section class="edit_site_client" id="edit_<%= dom_id
|
5
|
+
<section class="edit_site_client" id="edit_<%= dom_id resource %>">
|
6
6
|
<% if params[:step].present? %>
|
7
7
|
<%= render partial: "edit_step_#{ params[:step] }" %>
|
8
8
|
<% else %>
|
@@ -5,55 +5,24 @@
|
|
5
5
|
<section class="site_clients">
|
6
6
|
<header>
|
7
7
|
<h3>
|
8
|
-
<%= link_to t('site.client.new.link'),
|
8
|
+
<%= link_to t('site.client.new.link'), polymorphic_path(resource_class.new, action: 'new'), class: "new_site_client-modal-link", 'data-toggle' => 'modal' %>
|
9
9
|
|
10
|
-
|
10
|
+
Applications
|
11
11
|
</h3>
|
12
12
|
</header>
|
13
13
|
<div class="tabbable"> <!-- Only required for left/right tabs -->
|
14
14
|
<ul class="nav nav-tabs">
|
15
|
-
<li class="active"><a href="#tab1" data-toggle="tab">
|
16
|
-
|
17
|
-
|
18
|
-
<div class="search-nav hidden-phone">
|
19
|
-
<%= form_tag search_path, method: 'get', class: "navbar-search pull-left" do %>
|
20
|
-
<%= text_field_tag :q, nil, autocomplete: :off, class: 'search-query input-small', placeholder: t('search.name'), "data-min_query" => SocialStream::Search::MIN_QUERY %>
|
21
|
-
<% end %>
|
22
|
-
<%= javascript_tag do %>
|
23
|
-
$(function() {
|
24
|
-
SocialStream.SearchHeader.show();
|
25
|
-
});
|
26
|
-
<% end %>
|
27
|
-
<div class="mat">
|
28
|
-
<%= render partial: 'layouts/loading' %>
|
29
|
-
|
30
|
-
<div class="query_too_short">
|
31
|
-
<%= t 'search.at_least', count: SocialStream::Search::MIN_QUERY %>
|
32
|
-
</div>
|
33
|
-
|
34
|
-
<div class="no_results">
|
35
|
-
<%= t 'search.nothing' %>
|
36
|
-
</div>
|
37
|
-
|
38
|
-
<div class="results">
|
39
|
-
</div>
|
40
|
-
</div>
|
41
|
-
</div>
|
42
|
-
|
15
|
+
<li class="active"><a href="#tab1" data-toggle="tab">Managing</a></li>
|
16
|
+
</ul>
|
17
|
+
</div>
|
43
18
|
|
44
|
-
<div class="tab-content">
|
45
|
-
<div class="tab-pane active" id="tab1">
|
46
|
-
<%= render partial: 'list',
|
47
|
-
object: @clients %>
|
48
|
-
</div>
|
49
19
|
|
50
|
-
|
51
|
-
|
20
|
+
<div class="tab-content">
|
21
|
+
<div class="tab-pane active" id="tab1">
|
22
|
+
<%= render partial: 'list',
|
23
|
+
object: collection %>
|
52
24
|
</div>
|
53
25
|
</div>
|
54
|
-
|
55
26
|
<%= render partial: 'new.modal' %>
|
56
|
-
|
57
|
-
<hr class="soften">
|
58
27
|
</section>
|
59
28
|
</section>
|
@@ -1,14 +1,15 @@
|
|
1
1
|
<section id="site_client">
|
2
2
|
<%= render partial: 'toolbar/home' %>
|
3
3
|
|
4
|
-
<section class="site_client" id="<%= dom_id
|
4
|
+
<section class="site_client" id="<%= dom_id resource %>">
|
5
5
|
<header>
|
6
|
-
<
|
7
|
-
<%=
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
<h4>
|
7
|
+
<%= resource.name %>
|
8
|
+
|
9
|
+
<% if can?(:update, resource) %>
|
10
|
+
<%= link_to t('site.client.button.edit'), polymorphic_path(resource, action: 'edit'), class: "edit" %>
|
11
|
+
<% end %>
|
12
|
+
</h4>
|
12
13
|
|
13
14
|
<%= image_tag('logos/app-default.png', class: "logo-app pull-right") %>
|
14
15
|
|
@@ -20,53 +21,63 @@
|
|
20
21
|
<%= Site::Client.human_attribute_name :description %>
|
21
22
|
</h4>
|
22
23
|
<div class="result">
|
23
|
-
<%=
|
24
|
+
<%= resource.description%>
|
24
25
|
</div>
|
25
26
|
|
26
27
|
<h4>
|
27
28
|
<%= Site::Client.human_attribute_name :url %>
|
28
29
|
</h4>
|
29
30
|
<div class="result">
|
30
|
-
<%= link_to
|
31
|
+
<%= link_to resource.url, resource.url%>
|
31
32
|
</div>
|
32
33
|
|
33
|
-
<% if can? :update,
|
34
|
+
<% if can? :update, resource %>
|
34
35
|
<h4>
|
35
36
|
<%= Site::Client.human_attribute_name :callback_url %>
|
36
37
|
</h4>
|
37
38
|
<div class="result">
|
38
|
-
<%=
|
39
|
+
<%= resource.callback_url %>
|
39
40
|
</div>
|
40
41
|
<% end %>
|
41
42
|
</div>
|
42
43
|
|
43
|
-
<% if can? :
|
44
|
-
<div class="
|
45
|
-
<
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
44
|
+
<% if can? :update_secret, resource %>
|
45
|
+
<div class="accordion" id="accordion2">
|
46
|
+
<div class="accordion-group">
|
47
|
+
<div class="accordion-heading">
|
48
|
+
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
|
49
|
+
<%= t 'site.client.oauth.credentials' %>
|
50
|
+
</a>
|
51
|
+
</div>
|
52
|
+
<div id="collapseOne" class="accordion-body collapse">
|
53
|
+
<div class="accordion-inner">
|
54
|
+
<div class="content settings_content collapse in">
|
55
|
+
<div class="result">
|
56
|
+
<div class="client-id">
|
57
|
+
<h6>
|
58
|
+
<%= Site::Client.human_attribute_name :id %>
|
59
|
+
</h6>
|
60
|
+
<p>
|
61
|
+
<%= resource.id %>
|
62
|
+
</p>
|
63
|
+
</div>
|
64
|
+
<div class="client-secret">
|
65
|
+
<h6>
|
66
|
+
<%= Site::Client.human_attribute_name :secret %>
|
67
|
+
<%= form_tag update_secret_site_client_path(resource, format: :json), class: "site-client-secret" do %>
|
68
|
+
<%= submit_tag t('site.client.oauth.secret.refresh'), class: 'pull-right' %>
|
69
|
+
<% end %>
|
70
|
+
</h6>
|
71
|
+
<p>
|
72
|
+
<span class="site-client-secret"><%= resource.secret %></span>
|
73
|
+
</p>
|
74
|
+
</div>
|
75
|
+
</div>
|
76
|
+
</div>
|
77
|
+
</div>
|
78
|
+
</div>
|
79
|
+
</div>
|
80
|
+
</div>
|
70
81
|
<% end %>
|
71
82
|
</div>
|
72
83
|
</section>
|
@@ -74,48 +85,35 @@
|
|
74
85
|
<div class="tabbable"> <!-- Only required for left/right tabs -->
|
75
86
|
<ul class="nav nav-tabs">
|
76
87
|
<li class="active"><a href="#authorized" data-toggle="tab">Authorized</a></li>
|
77
|
-
<li><a href="#registered" data-toggle="tab">
|
78
|
-
<li><a href="#stats" data-toggle="tab">Stats</a></li>
|
88
|
+
<li><a href="#registered" data-toggle="tab">Users</a></li>
|
79
89
|
</ul>
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
<
|
91
|
-
<%= render partial: 'layouts/loading' %>
|
92
|
-
|
93
|
-
<div class="query_too_short">
|
94
|
-
<%= t 'search.at_least', count: SocialStream::Search::MIN_QUERY %>
|
95
|
-
</div>
|
96
|
-
|
97
|
-
<div class="no_results">
|
98
|
-
<%= t 'search.nothing' %>
|
99
|
-
</div>
|
100
|
-
|
101
|
-
<div class="results">
|
102
|
-
</div>
|
103
|
-
</div>
|
90
|
+
|
91
|
+
<%= render partial: 'contacts/add_button',
|
92
|
+
locals: {
|
93
|
+
sender: resource,
|
94
|
+
type: [ :user, :group ]
|
95
|
+
}
|
96
|
+
%>
|
97
|
+
|
98
|
+
<div class="btn-group" data-toggle="buttons">
|
99
|
+
<button type="radio" name="options" id="option1">user</button>
|
100
|
+
<button type="radio" name="options" id="option2"">organization</button>
|
104
101
|
</div>
|
105
102
|
|
103
|
+
<%= text_field_tag "contact-filter", "", placeholder: "filter", autocomplete: "off" %>
|
106
104
|
|
107
105
|
<div class="tab-content">
|
108
106
|
<div class="tab-pane active" id="authorized">
|
109
107
|
<%= render partial: 'contacts/contact',
|
110
|
-
collection:
|
108
|
+
collection: resource.sent_contacts.first(12) %>
|
111
109
|
</div>
|
112
110
|
|
113
111
|
<div class="tab-pane" id="registered">
|
114
112
|
</div>
|
115
|
-
|
116
|
-
<div class="tab-pane" id="stats">
|
117
|
-
</div>
|
118
113
|
</div>
|
119
114
|
</div>
|
120
115
|
|
116
|
+
<%= javascript_tag do %>
|
117
|
+
SocialStream.SiteClient.show();
|
118
|
+
<% end %>
|
121
119
|
</section>
|
data/config/locales/en.yml
CHANGED
@@ -33,6 +33,9 @@ en:
|
|
33
33
|
relation/custom: Manage roles
|
34
34
|
detailed:
|
35
35
|
manage:
|
36
|
+
contact:
|
37
|
+
negative: They WILL NOT BE ABLE to assign roles to users
|
38
|
+
positive: They WILL BE ABLE to assign roles to users
|
36
39
|
nil:
|
37
40
|
positive: They WILL BE ABLE to update the details of the client site
|
38
41
|
negative: They WILL NOT BE ABLE to update the details of the client
|
@@ -45,11 +48,27 @@ en:
|
|
45
48
|
public_info: Read your public information
|
46
49
|
relation_admin:
|
47
50
|
name: Site Client Admin
|
51
|
+
relation_manager:
|
52
|
+
name: Manager
|
48
53
|
site:
|
49
54
|
client:
|
50
55
|
added: Added sites
|
56
|
+
button:
|
57
|
+
edit: Edit
|
58
|
+
contact:
|
59
|
+
add: Add
|
60
|
+
destroy:
|
61
|
+
confirm: Are you sure? This operation cannot be reverted!
|
62
|
+
link: Remove the site client and all its data
|
63
|
+
title: Destroy site client
|
64
|
+
go_to_other: See your other site clients
|
51
65
|
index:
|
52
66
|
title: Client sites
|
53
67
|
new:
|
54
68
|
link: Add site
|
55
69
|
title: Register new client site
|
70
|
+
oauth:
|
71
|
+
credentials: Credentials
|
72
|
+
secret:
|
73
|
+
refresh: refresh
|
74
|
+
refreshed: OAuth2 client secret regenerated
|
data/config/locales/es.yml
CHANGED
@@ -15,9 +15,9 @@ es:
|
|
15
15
|
accept: Accept
|
16
16
|
cancel: Cancel
|
17
17
|
new:
|
18
|
-
title: Authorize %{client}?
|
19
18
|
permission:
|
20
19
|
title: 'The site %{client} will be able to:'
|
20
|
+
title: Authorize %{client}?
|
21
21
|
helpers:
|
22
22
|
submit:
|
23
23
|
site_client:
|
@@ -28,25 +28,44 @@ es:
|
|
28
28
|
default:
|
29
29
|
brief:
|
30
30
|
manage:
|
31
|
+
contact: Manage authorizations
|
31
32
|
nil: Gestionar el sitio
|
32
33
|
relation/custom: Gestionar los roles
|
33
|
-
contact: Manage authorizations
|
34
34
|
detailed:
|
35
35
|
manage:
|
36
|
+
contact:
|
37
|
+
negative: NO PODRÁN asignar roles a usuarios
|
38
|
+
positive: PODRÁN asignar roles a usuarios
|
36
39
|
nil:
|
37
|
-
positive: PODRÁN actualizar los detalles del sitio
|
38
40
|
negative: NO PODRÁN actualizar los detalles del sitio
|
41
|
+
positive: PODRÁN actualizar los detalles del sitio
|
39
42
|
relation/custom:
|
40
|
-
positive: PODRÁN crear, actualizar y borrar los roles del sitio
|
41
43
|
negative: NO PODRÁN crear, actualizar y borrar los roles del sitio
|
44
|
+
positive: PODRÁN crear, actualizar y borrar los roles del sitio
|
42
45
|
public_info: Acceder a tu información pública
|
43
46
|
relation_admin:
|
44
47
|
name: Administrador de Sitio
|
48
|
+
relation_manager:
|
49
|
+
name: Admin
|
45
50
|
site:
|
46
51
|
client:
|
47
52
|
added: Sitios añadidos
|
53
|
+
button:
|
54
|
+
edit: Editar
|
55
|
+
contact:
|
56
|
+
add: Add
|
57
|
+
destroy:
|
58
|
+
confirm: Are you sure? This operation cannot be reverted!
|
59
|
+
link: Remove the site client and all its data
|
60
|
+
title: Destroy site client
|
61
|
+
go_to_other: Ver tus otros sitios
|
48
62
|
index:
|
49
63
|
title: Sitios
|
50
64
|
new:
|
51
65
|
link: Añadir sitio
|
52
66
|
title: Registrar nuevo sitio
|
67
|
+
oauth:
|
68
|
+
credentials: Credenciales
|
69
|
+
secret:
|
70
|
+
refresh: regenerar
|
71
|
+
refreshed: Token secreto de OAuth2 regenerado
|
data/config/locales/zh.yml
CHANGED
@@ -15,41 +15,60 @@ zh:
|
|
15
15
|
accept: Accept
|
16
16
|
cancel: Cancel
|
17
17
|
new:
|
18
|
-
title: Authorize %{client}?
|
19
18
|
permission:
|
20
19
|
title: 'The site %{client} will be able to:'
|
20
|
+
title: Authorize %{client}?
|
21
|
+
helpers:
|
22
|
+
submit:
|
23
|
+
site_client:
|
24
|
+
create: Next
|
25
|
+
update: Save
|
21
26
|
permission:
|
22
|
-
public_info: Read your public information
|
23
27
|
description:
|
24
28
|
default:
|
25
29
|
brief:
|
26
30
|
manage:
|
31
|
+
contact: Manage authorizations
|
27
32
|
nil: Manage the site
|
28
33
|
relation/custom: Manage roles
|
29
|
-
contact: Manage authorizations
|
30
34
|
detailed:
|
31
35
|
manage:
|
36
|
+
contact:
|
37
|
+
negative: They WILL NOT BE ABLE to assign roles to users
|
38
|
+
positive: They WILL BE ABLE to assign roles to users
|
32
39
|
nil:
|
33
|
-
positive: They WILL BE ABLE to update the details of the client site
|
34
40
|
negative: They WILL NOT BE ABLE to update the details of the client
|
35
41
|
site
|
42
|
+
positive: They WILL BE ABLE to update the details of the client site
|
36
43
|
relation/custom:
|
37
|
-
positive: They WILL BE ABLE to create, update and delete the roles of
|
38
|
-
the client site
|
39
44
|
negative: They WILL NOT BE ABLE to create, update and delete the roles
|
40
45
|
of the client site
|
46
|
+
positive: They WILL BE ABLE to create, update and delete the roles of
|
47
|
+
the client site
|
48
|
+
public_info: Read your public information
|
49
|
+
relation_admin:
|
50
|
+
name: Site Client Admin
|
51
|
+
relation_manager:
|
52
|
+
name: Manager
|
41
53
|
site:
|
42
54
|
client:
|
43
55
|
added: Added sites
|
56
|
+
button:
|
57
|
+
edit: Edit
|
58
|
+
contact:
|
59
|
+
add: Add
|
60
|
+
destroy:
|
61
|
+
confirm: Are you sure? This operation cannot be reverted!
|
62
|
+
link: Remove the site client and all its data
|
63
|
+
title: Destroy site client
|
64
|
+
go_to_other: See your other site clients
|
44
65
|
index:
|
45
66
|
title: Client sites
|
46
67
|
new:
|
47
68
|
link: Add site
|
48
69
|
title: Register new client site
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
relation_admin:
|
55
|
-
name: Site Client Admin
|
70
|
+
oauth:
|
71
|
+
credentials: Credentials
|
72
|
+
secret:
|
73
|
+
refresh: refresh
|
74
|
+
refreshed: OAuth2 client secret regenerated
|
data/config/routes.rb
CHANGED
@@ -17,11 +17,14 @@ module SocialStream
|
|
17
17
|
autoload :TokenEndpoint, 'social_stream/oauth2_server/token_endpoint'
|
18
18
|
end
|
19
19
|
|
20
|
+
# Include site/client in routes
|
21
|
+
SocialStream.routed_subjects << :"site/client"
|
22
|
+
|
20
23
|
# Define default custom relations for Site::Client
|
21
24
|
SocialStream.custom_relations['site/client'] = {}
|
22
25
|
|
23
26
|
# Relations that appear in the Site::Client list
|
24
|
-
SocialStream.
|
27
|
+
SocialStream.system_relations['site/client'] = [ :manager ]
|
25
28
|
|
26
29
|
SocialStream.available_permissions['site/client'] = [
|
27
30
|
[ 'manage', nil ],
|
@@ -16,6 +16,8 @@ module SocialStream
|
|
16
16
|
|
17
17
|
has_many :refresh_tokens,
|
18
18
|
class_name: 'Oauth2Token::RefreshToken'
|
19
|
+
|
20
|
+
alias_method_chain :as_json, :client
|
19
21
|
end
|
20
22
|
|
21
23
|
# Is {#client} authorized by this {User}
|
@@ -29,6 +31,22 @@ module SocialStream
|
|
29
31
|
contact_to!(client).relation_ids += [ Relation::Auth.instance.id ]
|
30
32
|
end
|
31
33
|
end
|
34
|
+
|
35
|
+
# Include application role information in the json
|
36
|
+
def as_json_with_client options = {}
|
37
|
+
hash = as_json_without_client options
|
38
|
+
|
39
|
+
if options[:client] && !options[:client].is_a?(User)
|
40
|
+
hash['roles'] = options[:client].contact_to!(self).relations.map{ |r|
|
41
|
+
{
|
42
|
+
id: r.id,
|
43
|
+
name: r.name
|
44
|
+
}
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
hash
|
49
|
+
end
|
32
50
|
end
|
33
51
|
end
|
34
52
|
end
|
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.files = `git ls-files`.split("\n")
|
13
13
|
|
14
14
|
# Gem dependencies
|
15
|
-
s.add_runtime_dependency('social_stream-base', '~> 2.
|
15
|
+
s.add_runtime_dependency('social_stream-base', '~> 2.2.0')
|
16
16
|
s.add_runtime_dependency('rack-oauth2', '~> 1.0.0')
|
17
17
|
|
18
18
|
s.add_development_dependency('rspec-rails', '~> 2.8.0')
|
@@ -38,6 +38,13 @@ describe Site::ClientsController do
|
|
38
38
|
sign_in @user
|
39
39
|
end
|
40
40
|
|
41
|
+
it "should render index" do
|
42
|
+
@client = Factory(:"site/client", author: @user.actor )
|
43
|
+
get :index
|
44
|
+
|
45
|
+
response.should be_success
|
46
|
+
end
|
47
|
+
|
41
48
|
it "should render client" do
|
42
49
|
@client = Factory(:"site/client", author: @user.actor )
|
43
50
|
get :show, :id => @client.to_param
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: social_stream-oauth2_server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Antonio Tapiador
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-08-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: social_stream-base
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ~>
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 2.
|
20
|
+
version: 2.2.0
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - ~>
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 2.
|
27
|
+
version: 2.2.0
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rack-oauth2
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,6 +70,7 @@ files:
|
|
70
70
|
- app/assets/images/logos/small/site.png
|
71
71
|
- app/assets/images/step_1.png
|
72
72
|
- app/assets/images/step_2.png
|
73
|
+
- app/assets/images/step_3.png
|
73
74
|
- app/assets/javascripts/social_stream-oauth2_server.js
|
74
75
|
- app/assets/javascripts/social_stream/site_client.js
|
75
76
|
- app/assets/stylesheets/social_stream-oauth2_server.css.sass
|
@@ -93,6 +94,7 @@ files:
|
|
93
94
|
- app/controllers/authorizations_controller.rb
|
94
95
|
- app/controllers/site/clients_controller.rb
|
95
96
|
- app/decorators/social_stream/base/actor_decorator.rb
|
97
|
+
- app/decorators/social_stream/base/relation_decorator.rb
|
96
98
|
- app/decorators/social_stream/base/user_decorator.rb
|
97
99
|
- app/decorators/social_stream/base/users_controller_decorator.rb
|
98
100
|
- app/helpers/site_client_helper.rb
|
@@ -108,6 +110,7 @@ files:
|
|
108
110
|
- app/views/authorizations/error.html.erb
|
109
111
|
- app/views/authorizations/new.html.erb
|
110
112
|
- app/views/site/clients/_avatar.html.erb
|
113
|
+
- app/views/site/clients/_destroy.html.erb
|
111
114
|
- app/views/site/clients/_edit.html.erb
|
112
115
|
- app/views/site/clients/_edit_step_2.html.erb
|
113
116
|
- app/views/site/clients/_edit_step_3.html.erb
|
@@ -164,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
167
|
version: '0'
|
165
168
|
requirements: []
|
166
169
|
rubyforge_project:
|
167
|
-
rubygems_version: 2.0.
|
170
|
+
rubygems_version: 2.0.6
|
168
171
|
signing_key:
|
169
172
|
specification_version: 4
|
170
173
|
summary: OAuth2 server support for Social Stream, the framework for building social
|