123
Joomla ACL Sander Potjer - @sanderpotjer www.sanderpotjer.com Joomla World Conference 2015

Joomla ACL introduction, limit site access

Embed Size (px)

Citation preview

Page 1: Joomla ACL introduction, limit site access

Joomla ACL

Sander Potjer - @sanderpotjer www.sanderpotjer.com Joomla World Conference 2015

Page 2: Joomla ACL introduction, limit site access
Page 3: Joomla ACL introduction, limit site access
Page 4: Joomla ACL introduction, limit site access
Page 5: Joomla ACL introduction, limit site access
Page 6: Joomla ACL introduction, limit site access

- Enjoy contributing to Joomla

Page 7: Joomla ACL introduction, limit site access

- Enjoy contributing to Joomla - Joomla Agency: Perfect Web Team

Page 8: Joomla ACL introduction, limit site access

- Enjoy contributing to Joomla - Joomla Agency: Perfect Web Team - Joomla Extension: ACL Manager

Page 9: Joomla ACL introduction, limit site access

Sander Potjer

- Enjoy contributing to Joomla - Joomla Agency: Perfect Web Team - Joomla Extension: ACL Manager - [email protected] - Slides: sanderpotjer.com

Page 10: Joomla ACL introduction, limit site access

Photo by: Mark Fischer

Joomla ACL

Page 11: Joomla ACL introduction, limit site access

ACL?!?!ACL = Access Control List

Page 12: Joomla ACL introduction, limit site access

ACL?!?!ACL = Access Control List

1) Visibility of content

Page 13: Joomla ACL introduction, limit site access

ACL?!?!ACL = Access Control List

1) Visibility of content

2) Actions on objects

Page 14: Joomla ACL introduction, limit site access
Page 15: Joomla ACL introduction, limit site access

Photo by: Chris Smith

Overview

Page 16: Joomla ACL introduction, limit site access

user

Page 17: Joomla ACL introduction, limit site access

user permissions

Page 18: Joomla ACL introduction, limit site access

user permissions permissions

Site Login Admin Login

Offline Access Super Admin / Configure Access Admin. Interface

Create Delete

Edit Edit State Edit Own

Page 19: Joomla ACL introduction, limit site access

user permissions

group

Page 20: Joomla ACL introduction, limit site access

user permissions

access levelgroup

Page 21: Joomla ACL introduction, limit site access

user permissions

access levelgroup

Page 22: Joomla ACL introduction, limit site access

user permissions

access levelgroup

Page 23: Joomla ACL introduction, limit site access

user permissions

access levelgroup

Page 24: Joomla ACL introduction, limit site access

user permissions

access levelgroup

Page 25: Joomla ACL introduction, limit site access

user permissions

access levelgroup

Page 26: Joomla ACL introduction, limit site access

user permissions

access levelrole

Page 27: Joomla ACL introduction, limit site access

user permissions

Site Login Admin Login

Offline Access Super Admin / Configure Access Admin. Interface

Create Delete

Edit Edit State Edit Own

access levelgroup

Page 28: Joomla ACL introduction, limit site access

ACL levels

Photo by: Ian Sane

Page 29: Joomla ACL introduction, limit site access

Global Configuration permissions

Component permissions

Category / Module permissions

Article permissions

Page 30: Joomla ACL introduction, limit site access

Photo by: Andreas

Inheritance

Page 31: Joomla ACL introduction, limit site access

Global Configuration permissions

Component permissions

Category / Module permissions

Article permissions

Page 32: Joomla ACL introduction, limit site access

Global Configuration permissions

Component permissions

Category / Module permissions

Article permissions

Page 33: Joomla ACL introduction, limit site access

Global Configuration permissions

Component permissions

Category / Module permissions

Article permissions

not set

inherited

inherited

inherited

Page 34: Joomla ACL introduction, limit site access

Global Configuration permissions

Component permissions

Category / Module permissions

Article permissions

allowed

inherited

inherited

inherited

Page 35: Joomla ACL introduction, limit site access

Global Configuration permissions

Component permissions

Category / Module permissions

Article permissions

allowed

inherited

denied

locked

Page 36: Joomla ACL introduction, limit site access

Global Configuration permissions

Component permissions

Category / Module permissions

Article permissions

not set

allowed

inherited

inherited

Page 37: Joomla ACL introduction, limit site access

Global Configuration permissions

Component permissions

Category / Module permissions

Article permissions

not set

inherited

allowed

inherited

Page 38: Joomla ACL introduction, limit site access

Global Configuration permissions

Component permissions

Category / Module permissions

Article permissions

denied

allowed

locked

locked

Page 39: Joomla ACL introduction, limit site access

Global Configuration permissions

Component permissions

Category / Module permissions

Article permissions

denied

allowed

locked

locked

CONFLICT

Page 40: Joomla ACL introduction, limit site access

Photo by: Andreas

Inheritance #2

Page 41: Joomla ACL introduction, limit site access
Page 42: Joomla ACL introduction, limit site access

Photo by: Andreas

Inheritance #1 + #2

Page 43: Joomla ACL introduction, limit site access

Inheriting example for ‘Create’

Level 1

Level 2

Level 3

Level 4

Page 44: Joomla ACL introduction, limit site access

Inheriting example for ‘Create’

Level 1

Level 2

Level 3

Level 4

Page 45: Joomla ACL introduction, limit site access

Why?

Photo by: jon jordan

Page 46: Joomla ACL introduction, limit site access

Why not!

Photo by: Peter Reed

Page 47: Joomla ACL introduction, limit site access

Usability

Photo by: Rick Dolishny

Page 48: Joomla ACL introduction, limit site access

Don’t make me think

Photo by: Alper Çuğun

Page 49: Joomla ACL introduction, limit site access

Users want it!

Page 50: Joomla ACL introduction, limit site access

Users want it!

Page 51: Joomla ACL introduction, limit site access

Photo by: Mark Fischer

ACL Demo

Page 52: Joomla ACL introduction, limit site access

Basic ACL implementation

Photo by: Daniel Kulinski

Page 53: Joomla ACL introduction, limit site access
Page 54: Joomla ACL introduction, limit site access

Configure To configure the access settings via the 'Options'

toolbar button

Access Administration Interface To define which group is able to access/manage the

component

2 actions required

Page 55: Joomla ACL introduction, limit site access

4 steps 18 lines of code couple minutes

Page 56: Joomla ACL introduction, limit site access

Add actions 1

Page 57: Joomla ACL introduction, limit site access

File: administrator/components/com_foobar/config.xml

Page 58: Joomla ACL introduction, limit site access

Access check 2

Page 59: Joomla ACL introduction, limit site access

File: administrator/components/com_foobar/foobar.php

Page 60: Joomla ACL introduction, limit site access

‘Options’ toolbar button3

Page 61: Joomla ACL introduction, limit site access

File: administrator/components/com_foobar/views/foobars/view.html.php

Page 62: Joomla ACL introduction, limit site access

File: administrator/components/com_foobar/views/foobars/view.html.php

Page 63: Joomla ACL introduction, limit site access

Add language string 4

Page 64: Joomla ACL introduction, limit site access

File: administrator/language/en-GB/en-GB.com_foobar.ini

Page 65: Joomla ACL introduction, limit site access

Done!

Page 66: Joomla ACL introduction, limit site access

Basic ACL support is not optional, it is a

requirement for any Joomla extension!

Page 67: Joomla ACL introduction, limit site access

Advanced ACL implementation

Photo by: Patrick Lauke

Page 68: Joomla ACL introduction, limit site access

Database

Page 69: Joomla ACL introduction, limit site access
Page 70: Joomla ACL introduction, limit site access

Rules - JSON encoded

{"core.login.site":{"6":1,"2":1}

Page 71: Joomla ACL introduction, limit site access

com_content.article.24 [extension].[section].[object id]

Action name format (database)

Page 72: Joomla ACL introduction, limit site access
Page 73: Joomla ACL introduction, limit site access

JTable

Page 74: Joomla ACL introduction, limit site access
Page 75: Joomla ACL introduction, limit site access

Access.xml

Page 76: Joomla ACL introduction, limit site access

File: administrator/components/com_foobar/config.xml

Page 77: Joomla ACL introduction, limit site access

File: administrator/components/com_content/access.xml

Page 78: Joomla ACL introduction, limit site access

File: administrator/components/com_content/access.xml

Page 79: Joomla ACL introduction, limit site access

File: administrator/components/com_content/access.xml

Page 80: Joomla ACL introduction, limit site access

File: administrator/components/com_content/access.xml

Page 81: Joomla ACL introduction, limit site access

File: administrator/components/com_content/access.xml

Page 82: Joomla ACL introduction, limit site access

File: administrator/components/com_content/access.xml

Component permissions

Category / Module permissions

Article permissions

Page 83: Joomla ACL introduction, limit site access

File: administrator/components/com_content/access.xml

Page 84: Joomla ACL introduction, limit site access

Site Login: core.login.site Admin Login: core.login.admin

Offline Access: core.login.offline Super Admin / Configure: core.admin

Access Administration Interface: core.manager Create: core.create Delete: core.delete

Edit: core.edit Edit State: core.edit.state Edit Own: core.edit.own

Title vs Name

Page 85: Joomla ACL introduction, limit site access

File: administrator/components/com_content/access.xml

Page 86: Joomla ACL introduction, limit site access

File: administrator/components/com_content/access.xml

Component permissions

Category / Module permissions

Article permissions

allowed

inherited

inherited

Page 87: Joomla ACL introduction, limit site access
Page 88: Joomla ACL introduction, limit site access

Custom Actions

Page 89: Joomla ACL introduction, limit site access
Page 90: Joomla ACL introduction, limit site access

File: administrator/components/com_akeeba/access.xml

Page 91: Joomla ACL introduction, limit site access

File: administrator/components/com_akeeba/access.xml

Page 92: Joomla ACL introduction, limit site access

File: administrator/components/com_akeeba/access.xml

Page 93: Joomla ACL introduction, limit site access

File: administrator/components/com_akeeba/access.xml

Page 94: Joomla ACL introduction, limit site access

File: administrator/components/com_akeeba/access.xml

Page 95: Joomla ACL introduction, limit site access

Action name format (xml)

akeeba.backup [name extension].[name action]

Page 96: Joomla ACL introduction, limit site access

Keep it structured

Page 97: Joomla ACL introduction, limit site access
Page 98: Joomla ACL introduction, limit site access

Interface

Page 99: Joomla ACL introduction, limit site access
Page 100: Joomla ACL introduction, limit site access

File: administrator/components/com_foobar/views/foobar/tmpl/edit.php

Page 101: Joomla ACL introduction, limit site access

getActions helper

Page 102: Joomla ACL introduction, limit site access

File: libraries/cms/helper/content.php

Page 103: Joomla ACL introduction, limit site access

File: can be used anywhere

Page 104: Joomla ACL introduction, limit site access

File: can be used anywhere

Page 105: Joomla ACL introduction, limit site access

addToolbar

Page 106: Joomla ACL introduction, limit site access

File: administrator/components/com_foobar/views/foobars/view.html.php

Page 107: Joomla ACL introduction, limit site access

File: administrator/components/com_foobar/views/foobars/view.html.php

Page 108: Joomla ACL introduction, limit site access

Photo by: Chris Smith

Overview?????

Page 109: Joomla ACL introduction, limit site access

Action: Edit State• Global configuration

– default permissions for each action and group

• Component options (permissions) – can override the default permissions for a component

• Category – can override the default permissions and component options

– applies to components with categories (Articles, Banners, etc...)

• Object – can override all permissions above for an object

– only applies to articles in Joomla 1.6 core

Page 110: Joomla ACL introduction, limit site access

Many permission screens....• Global configuration

– default permissions for each action and group

• Component options (permissions) – can override the default permissions for a component

• Category – can override the default permissions and component options

– applies to components with categories (Articles, Banners, etc...)

• Object – can override all permissions above for an object

– only applies to articles in Joomla 1.6 core

Page 111: Joomla ACL introduction, limit site access

Many permission screens....• Global configuration

– default permissions for each action and group

• Component options (permissions) – can override the default permissions for a component

• Category – can override the default permissions and component options

– applies to components with categories (Articles, Banners, etc...)

• Object – can override all permissions above for an object

– only applies to articles in Joomla 1.6 core

Page 112: Joomla ACL introduction, limit site access

Many permission screens....• Global configuration

– default permissions for each action and group

• Component options (permissions) – can override the default permissions for a component

• Category – can override the default permissions and component options

– applies to components with categories (Articles, Banners, etc...)

• Object – can override all permissions above for an object

– only applies to articles in Joomla 1.6 core

Page 113: Joomla ACL introduction, limit site access

Many permission screens....• Global configuration

– default permissions for each action and group

• Component options (permissions) – can override the default permissions for a component

• Category – can override the default permissions and component options

– applies to components with categories (Articles, Banners, etc...)

• Object – can override all permissions above for an object

– only applies to articles in Joomla 1.6 core

Page 114: Joomla ACL introduction, limit site access

Idea?!

Page 115: Joomla ACL introduction, limit site access

Action: Edit State• Global configuration

– default permissions for each action and group

• Component options (permissions) – can override the default permissions for a component

• Category – can override the default permissions and component options

– applies to components with categories (Articles, Banners, etc...)

• Object – can override all permissions above for an object

– only applies to articles in Joomla 1.6 core

ACL Manager for Joomla! 1.6

Page 116: Joomla ACL introduction, limit site access
Page 117: Joomla ACL introduction, limit site access
Page 118: Joomla ACL introduction, limit site access
Page 119: Joomla ACL introduction, limit site access
Page 120: Joomla ACL introduction, limit site access
Page 121: Joomla ACL introduction, limit site access

ACL Manager for Joomla! 1.6• USA group

– Allow on edit ‘USA’ category

– Deny on edit ‘Europe’ category

• Europe group – Allow on edit ‘Europe’ category

– Deny on edit ‘USA’ category

• User in USA & Europe group – Deny on edit ‘Europe’ category

– Deny on edit ‘USA’ category

– Deny always winwww.aclmanager.net

Page 122: Joomla ACL introduction, limit site access

Resources

Photo by: Schub@

Page 123: Joomla ACL introduction, limit site access

Is your extension really Joomla 1.7 ready?http://www.aclmanager.net/news/general/28-is-your-extension-really-joomla-17-ready

How to add basic ACL support to your extension http://www.aclmanager.net/news/general/31-how-to-add-basic-acl-support-to-your-

extension

Developing a MVC Component/Adding ACL http://docs.joomla.org/J2.5:Developing_a_MVC_Component/Adding_ACL

Adding ACL rules to your component http://docs.joomla.org/Adding_ACL_rules_to_your_component

Access Control List Tutorial http://docs.joomla.org/J2.5:Access_Control_List_Tutorial

Support for ACL permissions per module in com_modules https://github.com/joomla/joomla-cms/pull/1930/files

JHelperContent::getActions() improvementshttps://github.com/joomla/joomla-cms/pull/2728

This presentation http://slideshare.net/sanderpotjer/