kms 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +30 -0
- data/app/assets/fonts/casper-webfont.eot +0 -0
- data/app/assets/fonts/casper-webfont.svg +278 -0
- data/app/assets/fonts/casper-webfont.ttf +0 -0
- data/app/assets/fonts/casper-webfont.woff +0 -0
- data/app/assets/fonts/casper-webfont.woff2 +0 -0
- data/app/assets/fonts/glyphicons-halflings-regular.eot +0 -0
- data/app/assets/fonts/glyphicons-halflings-regular.svg +229 -0
- data/app/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/app/assets/fonts/glyphicons-halflings-regular.woff +0 -0
- data/app/assets/javascripts/kms/application.js +49 -0
- data/app/assets/javascripts/kms/application/controllers/assets_controller.coffee +70 -0
- data/app/assets/javascripts/kms/application/controllers/help_controller.coffee +12 -0
- data/app/assets/javascripts/kms/application/controllers/pages_controller.coffee +95 -0
- data/app/assets/javascripts/kms/application/controllers/settings_controller.coffee +21 -0
- data/app/assets/javascripts/kms/application/controllers/sidebar_controller.coffee +26 -0
- data/app/assets/javascripts/kms/application/controllers/snippets_controller.coffee +44 -0
- data/app/assets/javascripts/kms/application/controllers/templates_controller.coffee +46 -0
- data/app/assets/javascripts/kms/application/controllers/users_controller.coffee +31 -0
- data/app/assets/javascripts/kms/application/module.coffee +24 -0
- data/app/assets/javascripts/kms/application/routes.coffee.erb +171 -0
- data/app/assets/javascripts/kms/application/services/errors_service.coffee +8 -0
- data/app/assets/javascripts/templates/assets/edit.html.slim +10 -0
- data/app/assets/javascripts/templates/assets/index.html.slim +31 -0
- data/app/assets/javascripts/templates/assets/new.html.slim +16 -0
- data/app/assets/javascripts/templates/help.html.slim +172 -0
- data/app/assets/javascripts/templates/help/filters.html.slim +51 -0
- data/app/assets/javascripts/templates/help/variables.html.slim +96 -0
- data/app/assets/javascripts/templates/pages/edit.html.slim +7 -0
- data/app/assets/javascripts/templates/pages/form.html.slim +32 -0
- data/app/assets/javascripts/templates/pages/index.html.slim +33 -0
- data/app/assets/javascripts/templates/pages/new.html.slim +5 -0
- data/app/assets/javascripts/templates/settings.html.slim +20 -0
- data/app/assets/javascripts/templates/snippets/edit.html.slim +5 -0
- data/app/assets/javascripts/templates/snippets/form.html.slim +10 -0
- data/app/assets/javascripts/templates/snippets/index.html.slim +22 -0
- data/app/assets/javascripts/templates/snippets/new.html.slim +5 -0
- data/app/assets/javascripts/templates/templates/edit.html.slim +7 -0
- data/app/assets/javascripts/templates/templates/form.html.slim +7 -0
- data/app/assets/javascripts/templates/templates/index.html.slim +22 -0
- data/app/assets/javascripts/templates/templates/new.html.slim +5 -0
- data/app/assets/javascripts/templates/users/form.html.slim +14 -0
- data/app/assets/javascripts/templates/users/index.html.slim +21 -0
- data/app/assets/javascripts/templates/users/new.html.slim +5 -0
- data/app/assets/stylesheets/kms/application.css +57 -0
- data/app/assets/stylesheets/kms/custom.css.scss +67 -0
- data/app/assets/stylesheets/kms/responsive_dashboard.css.less +9 -0
- data/app/controllers/kms/application_controller.rb +24 -0
- data/app/controllers/kms/assets_controller.rb +58 -0
- data/app/controllers/kms/kms_controller.rb +8 -0
- data/app/controllers/kms/pages_controller.rb +67 -0
- data/app/controllers/kms/public/pages_controller.rb +27 -0
- data/app/controllers/kms/public/search_controller.rb +18 -0
- data/app/controllers/kms/resources_controller.rb +9 -0
- data/app/controllers/kms/settings_controller.rb +24 -0
- data/app/controllers/kms/snippets_controller.rb +37 -0
- data/app/controllers/kms/templates_controller.rb +43 -0
- data/app/controllers/kms/users_controller.rb +36 -0
- data/app/controllers/users/confirmations_controller.rb +28 -0
- data/app/controllers/users/omniauth_callbacks_controller.rb +28 -0
- data/app/controllers/users/passwords_controller.rb +32 -0
- data/app/controllers/users/registrations_controller.rb +70 -0
- data/app/controllers/users/sessions_controller.rb +25 -0
- data/app/controllers/users/unlocks_controller.rb +28 -0
- data/app/helpers/kms/application_helper.rb +4 -0
- data/app/models/ability.rb +38 -0
- data/app/models/concerns/kms/compile_templates.rb +39 -0
- data/app/models/concerns/kms/permalinkable.rb +13 -0
- data/app/models/concerns/kms/update_stylesheets_text.rb +20 -0
- data/app/models/kms/asset.rb +83 -0
- data/app/models/kms/page.rb +61 -0
- data/app/models/kms/settings.rb +7 -0
- data/app/models/kms/snippet.rb +11 -0
- data/app/models/kms/template.rb +11 -0
- data/app/models/kms/user.rb +18 -0
- data/app/serializers/kms/settings_serializer.rb +5 -0
- data/app/serializers/kms/snippet_serializer.rb +5 -0
- data/app/services/kms/ability_service.rb +11 -0
- data/app/services/kms/externals_registry.rb +11 -0
- data/app/services/kms/form_customization_service.rb +14 -0
- data/app/services/kms/help_service.rb +13 -0
- data/app/services/kms/resource_service.rb +22 -0
- data/app/services/kms/search_service.rb +11 -0
- data/app/services/kms/settings_service.rb +13 -0
- data/app/uploaders/kms/asset_uploader.rb +61 -0
- data/app/views/devise/registrations/new.html.erb +21 -0
- data/app/views/devise/sessions/new.html.erb +17 -0
- data/app/views/devise/shared/_links.html.erb +25 -0
- data/app/views/layouts/kms/devise.html.erb +35 -0
- data/app/views/layouts/kms/kms.html.erb +139 -0
- data/config/initializers/bower_rails.rb +16 -0
- data/config/initializers/devise.rb +15 -0
- data/config/initializers/externals.rb +42 -0
- data/config/initializers/help.rb +1 -0
- data/config/initializers/liquor.rb +49 -0
- data/config/initializers/resources.rb +5 -0
- data/config/locales/devise.en.yml +59 -0
- data/config/locales/devise.ru.yml +63 -0
- data/config/locales/en.yml +172 -0
- data/config/locales/ru.yml +172 -0
- data/config/routes.rb +31 -0
- data/db/migrate/20141027065341_create_pages.rb +12 -0
- data/db/migrate/20141027083603_create_templates.rb +10 -0
- data/db/migrate/20141027083633_add_template_id_to_pages.rb +6 -0
- data/db/migrate/20141029145253_create_assets.rb +10 -0
- data/db/migrate/20141031125758_add_ancestry_to_pages.rb +6 -0
- data/db/migrate/20141031140308_devise_create_users.rb +42 -0
- data/db/migrate/20141119084306_add_fullpath_to_pages.rb +5 -0
- data/db/migrate/20141121112652_add_role_to_users.rb +5 -0
- data/db/migrate/20141127073902_add_templatable_fields_to_pages.rb +6 -0
- data/db/migrate/20141209132901_add_hidden_to_page.rb +5 -0
- data/db/migrate/20150209120632_add_position_to_kms_pages.rb +5 -0
- data/db/migrate/20160129100437_create_kms_snippets.rb +11 -0
- data/db/migrate/20160712094512_create_kms_settings.rb +9 -0
- data/lib/generators/kms/install/install_generator.rb +34 -0
- data/lib/generators/kms/install/templates/devise.rb +257 -0
- data/lib/generators/kms/install/templates/dragonfly.rb +35 -0
- data/lib/kms.rb +6 -0
- data/lib/kms/dependencies.rb +15 -0
- data/lib/kms/drops/page_drop.rb +24 -0
- data/lib/kms/drops/search_item_drop.rb +5 -0
- data/lib/kms/engine.rb +65 -0
- data/lib/kms/externals/bigdecimal.rb +5 -0
- data/lib/kms/externals/request.rb +4 -0
- data/lib/kms/functions/assets.rb +40 -0
- data/lib/kms/functions/currency.rb +21 -0
- data/lib/kms/search_item.rb +28 -0
- data/lib/kms/version.rb +3 -0
- data/lib/tasks/kms_tasks.rake +4 -0
- data/lib/tasks/precompile_hook.rake +42 -0
- data/spec/controllers/kms/snippets_controller_spec.rb +74 -0
- data/spec/factories/kms_settings.rb +6 -0
- data/spec/factories/snippets.rb +10 -0
- data/spec/factories/users.rb +7 -0
- data/spec/internal/Rakefile +2 -0
- data/spec/internal/config/database.yml +7 -0
- data/spec/internal/config/initializers/devise.rb +257 -0
- data/spec/internal/config/routes.rb +7 -0
- data/spec/internal/db/schema.rb +69 -0
- data/spec/internal/log/test.log +14998 -0
- data/spec/internal/public/favicon.ico +0 -0
- data/spec/internal/tmp/cache/assets/test/sprockets/v3.0/1XyAFYlYI0pK7WAgjR4PgXV6BgU6huJSviWmHetdCRs.cache +1 -0
- data/spec/models/kms/setting_spec.rb +7 -0
- data/spec/models/kms/snippet_spec.rb +14 -0
- data/spec/services/kms/help_service_spec.rb +8 -0
- data/spec/spec_helper.rb +27 -0
- data/spec/support/controller_macros.rb +11 -0
- data/spec/support/request_helpers.rb +7 -0
- metadata +521 -0
@@ -0,0 +1,27 @@
|
|
1
|
+
module Kms
|
2
|
+
class Public::PagesController < ActionController::Base
|
3
|
+
|
4
|
+
before_filter :eval_externals
|
5
|
+
|
6
|
+
def show
|
7
|
+
page_result = Kms.template_manager.render(@page.register_id, @externals)
|
8
|
+
# apply typograph to page content
|
9
|
+
#page_result = EvilFront::Russian.typograph_html(page_result)
|
10
|
+
result = Kms.template_manager.render(@template.register_id, @externals.
|
11
|
+
merge(_inner_template: page_result))
|
12
|
+
|
13
|
+
render text: result, layout: false
|
14
|
+
end
|
15
|
+
|
16
|
+
protected
|
17
|
+
|
18
|
+
def eval_externals
|
19
|
+
@externals = Hash[ExternalsRegistry.externals.map{ |k, v| [k, v.call(request, self)] }]
|
20
|
+
@page = @externals[:page].source
|
21
|
+
@template = @page.template
|
22
|
+
rescue ActiveRecord::RecordNotFound
|
23
|
+
render file: "#{Rails.root}/public/404.html", layout: false, status: :not_found
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Kms
|
2
|
+
class Public::SearchController < ActionController::Base
|
3
|
+
def search
|
4
|
+
results = Page.advanced_search(params[:query]).to_drop#.split(' ').join('|').to_drop
|
5
|
+
if params[:result_page] and @page = Page.find_by_fullpath(params[:result_page])
|
6
|
+
@externals = Hash[ExternalsRegistry.externals.map{ |k, v| [k, v.call(request, self)] }]
|
7
|
+
@template = @page.template
|
8
|
+
|
9
|
+
page_result = Rails.configuration.x.template_manager.render(@page.register_id, @externals.merge!(search: results))
|
10
|
+
result = Rails.configuration.x.template_manager.render(@template.register_id, @externals.merge(_inner_template: page_result))
|
11
|
+
|
12
|
+
render text: result, layout: false
|
13
|
+
else
|
14
|
+
redirect_to root_path
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Kms
|
2
|
+
class SettingsController < ApplicationController
|
3
|
+
authorize_resource :class => false
|
4
|
+
|
5
|
+
def show
|
6
|
+
render json: Settings.instance
|
7
|
+
end
|
8
|
+
|
9
|
+
def update
|
10
|
+
@settings = Settings.instance
|
11
|
+
if @settings.update_attributes(settings_params)
|
12
|
+
render json: @settings
|
13
|
+
else
|
14
|
+
render json: @settings.to_json(methods: :errors), status: :unprocessable_entity
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
protected
|
19
|
+
|
20
|
+
def settings_params
|
21
|
+
params.require(:setting).permit!
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Kms
|
2
|
+
class SnippetsController < ApplicationController
|
3
|
+
respond_to :json
|
4
|
+
|
5
|
+
def index
|
6
|
+
render json: Snippet.all, root: false
|
7
|
+
end
|
8
|
+
|
9
|
+
def create
|
10
|
+
@snippet = Snippet.create(snippet_params)
|
11
|
+
render json: @snippet, root: false
|
12
|
+
end
|
13
|
+
|
14
|
+
def update
|
15
|
+
@snippet = Snippet.find(params[:id])
|
16
|
+
@snippet.update(snippet_params)
|
17
|
+
render json: @snippet, root: false
|
18
|
+
end
|
19
|
+
|
20
|
+
def show
|
21
|
+
@snippet = Snippet.find(params[:id])
|
22
|
+
render json: @snippet, root: false
|
23
|
+
end
|
24
|
+
|
25
|
+
def destroy
|
26
|
+
@snippet = Snippet.find(params[:id])
|
27
|
+
@snippet.destroy
|
28
|
+
render json: @snippet
|
29
|
+
end
|
30
|
+
|
31
|
+
protected
|
32
|
+
|
33
|
+
def snippet_params
|
34
|
+
params.require(:snippet).permit!
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Kms
|
2
|
+
class TemplatesController < ApplicationController
|
3
|
+
load_and_authorize_resource
|
4
|
+
def index
|
5
|
+
render json: Template.all.to_json
|
6
|
+
end
|
7
|
+
|
8
|
+
def create
|
9
|
+
@template = Template.new(template_params)
|
10
|
+
if @template.save
|
11
|
+
render json: @template.to_json
|
12
|
+
else
|
13
|
+
render json: @template.to_json(methods: :errors), status: :unprocessable_entity
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def update
|
18
|
+
@template = Template.find(params[:id])
|
19
|
+
if @template.update_attributes(template_params)
|
20
|
+
render json: @template.to_json
|
21
|
+
else
|
22
|
+
render json: @template.to_json(methods: :errors), status: :unprocessable_entity
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def show
|
27
|
+
@template = Template.find(params[:id])
|
28
|
+
render json: @template.to_json
|
29
|
+
end
|
30
|
+
|
31
|
+
def destroy
|
32
|
+
@template = Template.find(params[:id])
|
33
|
+
@template.destroy
|
34
|
+
render json: @template.to_json
|
35
|
+
end
|
36
|
+
|
37
|
+
protected
|
38
|
+
|
39
|
+
def template_params
|
40
|
+
params.require(:template).permit(:name,:content)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Kms
|
2
|
+
class UsersController < ApplicationController
|
3
|
+
before_action :authenticate_kms_user!
|
4
|
+
load_and_authorize_resource
|
5
|
+
skip_authorize_resource only: :kms_user
|
6
|
+
|
7
|
+
def index
|
8
|
+
render json: User.all.to_json(except: [:created_at, :updated_at], methods: :localized_role)
|
9
|
+
end
|
10
|
+
|
11
|
+
def create
|
12
|
+
user_params.merge!(password: params[:password], password_confirmation: params[:password_confirmation]) if params[:password]
|
13
|
+
@user = User.new(user_params)
|
14
|
+
@user.save
|
15
|
+
render json: @user.to_json
|
16
|
+
end
|
17
|
+
|
18
|
+
def destroy
|
19
|
+
@user = User.find(params[:id])
|
20
|
+
@user.destroy
|
21
|
+
render json: @user.to_json
|
22
|
+
end
|
23
|
+
|
24
|
+
def kms_user
|
25
|
+
render json: current_kms_user.to_json
|
26
|
+
end
|
27
|
+
|
28
|
+
protected
|
29
|
+
|
30
|
+
def user_params
|
31
|
+
params.require(:user).permit!
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class Users::ConfirmationsController < Devise::ConfirmationsController
|
2
|
+
# GET /resource/confirmation/new
|
3
|
+
# def new
|
4
|
+
# super
|
5
|
+
# end
|
6
|
+
|
7
|
+
# POST /resource/confirmation
|
8
|
+
# def create
|
9
|
+
# super
|
10
|
+
# end
|
11
|
+
|
12
|
+
# GET /resource/confirmation?confirmation_token=abcdef
|
13
|
+
# def show
|
14
|
+
# super
|
15
|
+
# end
|
16
|
+
|
17
|
+
# protected
|
18
|
+
|
19
|
+
# The path used after resending confirmation instructions.
|
20
|
+
# def after_resending_confirmation_instructions_path_for(resource_name)
|
21
|
+
# super(resource_name)
|
22
|
+
# end
|
23
|
+
|
24
|
+
# The path used after confirmation.
|
25
|
+
# def after_confirmation_path_for(resource_name, resource)
|
26
|
+
# super(resource_name, resource)
|
27
|
+
# end
|
28
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
2
|
+
# You should configure your model like this:
|
3
|
+
# devise :omniauthable, omniauth_providers: [:twitter]
|
4
|
+
|
5
|
+
# You should also create an action method in this controller like this:
|
6
|
+
# def twitter
|
7
|
+
# end
|
8
|
+
|
9
|
+
# More info at:
|
10
|
+
# https://github.com/plataformatec/devise#omniauth
|
11
|
+
|
12
|
+
# GET|POST /resource/auth/twitter
|
13
|
+
# def passthru
|
14
|
+
# super
|
15
|
+
# end
|
16
|
+
|
17
|
+
# GET|POST /users/auth/twitter/callback
|
18
|
+
# def failure
|
19
|
+
# super
|
20
|
+
# end
|
21
|
+
|
22
|
+
# protected
|
23
|
+
|
24
|
+
# The path used when omniauth fails
|
25
|
+
# def after_omniauth_failure_path_for(scope)
|
26
|
+
# super(scope)
|
27
|
+
# end
|
28
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
class Users::PasswordsController < Devise::PasswordsController
|
2
|
+
# GET /resource/password/new
|
3
|
+
# def new
|
4
|
+
# super
|
5
|
+
# end
|
6
|
+
|
7
|
+
# POST /resource/password
|
8
|
+
# def create
|
9
|
+
# super
|
10
|
+
# end
|
11
|
+
|
12
|
+
# GET /resource/password/edit?reset_password_token=abcdef
|
13
|
+
# def edit
|
14
|
+
# super
|
15
|
+
# end
|
16
|
+
|
17
|
+
# PUT /resource/password
|
18
|
+
# def update
|
19
|
+
# super
|
20
|
+
# end
|
21
|
+
|
22
|
+
# protected
|
23
|
+
|
24
|
+
# def after_resetting_password_path_for(resource)
|
25
|
+
# super(resource)
|
26
|
+
# end
|
27
|
+
|
28
|
+
# The path used after sending reset password instructions
|
29
|
+
# def after_sending_reset_password_instructions_path_for(resource_name)
|
30
|
+
# super(resource_name)
|
31
|
+
# end
|
32
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
class Users::RegistrationsController < Devise::RegistrationsController
|
2
|
+
#before_filter :configure_sign_up_params, only: [:create]
|
3
|
+
# before_filter :configure_account_update_params, only: [:update]
|
4
|
+
|
5
|
+
# GET /resource/sign_up
|
6
|
+
# def new
|
7
|
+
# super
|
8
|
+
# end
|
9
|
+
|
10
|
+
# POST /resource
|
11
|
+
# def create
|
12
|
+
# super
|
13
|
+
# end
|
14
|
+
|
15
|
+
# GET /resource/edit
|
16
|
+
# def edit
|
17
|
+
# super
|
18
|
+
# end
|
19
|
+
|
20
|
+
# PUT /resource
|
21
|
+
# def update
|
22
|
+
# super
|
23
|
+
# end
|
24
|
+
|
25
|
+
# DELETE /resource
|
26
|
+
# def destroy
|
27
|
+
# super
|
28
|
+
# end
|
29
|
+
|
30
|
+
# GET /resource/cancel
|
31
|
+
# Forces the session data which is usually expired after sign
|
32
|
+
# in to be expired now. This is useful if the user wants to
|
33
|
+
# cancel oauth signing in/up in the middle of the process,
|
34
|
+
# removing all OAuth session data.
|
35
|
+
# def cancel
|
36
|
+
# super
|
37
|
+
# end
|
38
|
+
|
39
|
+
protected
|
40
|
+
|
41
|
+
def build_resource(hash=nil)
|
42
|
+
self.resource = resource_class.new_with_session(hash || {}, session)
|
43
|
+
# make first user as admin
|
44
|
+
unless Kms::User.exists?
|
45
|
+
self.resource.role = "admin"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
# You can put the params you want to permit in the empty array.
|
51
|
+
#def configure_sign_up_params
|
52
|
+
# make first user as admin
|
53
|
+
#devise_parameter_sanitizer.for(:sign_up) << :attribute
|
54
|
+
#end
|
55
|
+
|
56
|
+
# You can put the params you want to permit in the empty array.
|
57
|
+
# def configure_account_update_params
|
58
|
+
# devise_parameter_sanitizer.for(:account_update) << :attribute
|
59
|
+
# end
|
60
|
+
|
61
|
+
# The path used after sign up.
|
62
|
+
# def after_sign_up_path_for(resource)
|
63
|
+
# super(resource)
|
64
|
+
# end
|
65
|
+
|
66
|
+
# The path used after sign up for inactive accounts.
|
67
|
+
# def after_inactive_sign_up_path_for(resource)
|
68
|
+
# super(resource)
|
69
|
+
# end
|
70
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class Users::SessionsController < Devise::SessionsController
|
2
|
+
# before_filter :configure_sign_in_params, only: [:create]
|
3
|
+
|
4
|
+
# GET /resource/sign_in
|
5
|
+
# def new
|
6
|
+
# super
|
7
|
+
# end
|
8
|
+
|
9
|
+
# POST /resource/sign_in
|
10
|
+
# def create
|
11
|
+
# super
|
12
|
+
# end
|
13
|
+
|
14
|
+
# DELETE /resource/sign_out
|
15
|
+
# def destroy
|
16
|
+
# super
|
17
|
+
# end
|
18
|
+
|
19
|
+
# protected
|
20
|
+
|
21
|
+
# You can put the params you want to permit in the empty array.
|
22
|
+
# def configure_sign_in_params
|
23
|
+
# devise_parameter_sanitizer.for(:sign_in) << :attribute
|
24
|
+
# end
|
25
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class Users::UnlocksController < Devise::UnlocksController
|
2
|
+
# GET /resource/unlock/new
|
3
|
+
# def new
|
4
|
+
# super
|
5
|
+
# end
|
6
|
+
|
7
|
+
# POST /resource/unlock
|
8
|
+
# def create
|
9
|
+
# super
|
10
|
+
# end
|
11
|
+
|
12
|
+
# GET /resource/unlock?unlock_token=abcdef
|
13
|
+
# def show
|
14
|
+
# super
|
15
|
+
# end
|
16
|
+
|
17
|
+
# protected
|
18
|
+
|
19
|
+
# The path used after sending unlock password instructions
|
20
|
+
# def after_sending_unlock_instructions_path_for(resource)
|
21
|
+
# super(resource)
|
22
|
+
# end
|
23
|
+
|
24
|
+
# The path used after unlocking the resource
|
25
|
+
# def after_unlock_path_for(resource)
|
26
|
+
# super(resource)
|
27
|
+
# end
|
28
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
class Ability
|
2
|
+
include CanCan::Ability
|
3
|
+
|
4
|
+
def initialize(user)
|
5
|
+
# Define abilities for the passed in user here. For example:
|
6
|
+
#
|
7
|
+
user ||= Kms::User.new # guest user (not logged in)
|
8
|
+
if user.admin?
|
9
|
+
can :manage, :all
|
10
|
+
else
|
11
|
+
can :index, Kms::Template
|
12
|
+
can :manage, Kms::Page
|
13
|
+
can :manage, Kms::Asset
|
14
|
+
Kms::AbilityService.abilities.each do |ability_block|
|
15
|
+
instance_eval(&ability_block)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
#
|
20
|
+
# The first argument to `can` is the action you are giving the user
|
21
|
+
# permission to do.
|
22
|
+
# If you pass :manage it will apply to every action. Other common actions
|
23
|
+
# here are :read, :create, :update and :destroy.
|
24
|
+
#
|
25
|
+
# The second argument is the resource the user can perform the action on.
|
26
|
+
# If you pass :all it will apply to every resource. Otherwise pass a Ruby
|
27
|
+
# class of the resource.
|
28
|
+
#
|
29
|
+
# The third argument is an optional hash of conditions to further filter the
|
30
|
+
# objects.
|
31
|
+
# For example, here the user can only update published articles.
|
32
|
+
#
|
33
|
+
# can :update, Article, :published => true
|
34
|
+
#
|
35
|
+
# See the wiki for details:
|
36
|
+
# https://github.com/CanCanCommunity/cancancan/wiki/Defining-Abilities
|
37
|
+
end
|
38
|
+
end
|