Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2011-06-14 09:37:16

  szewczyk - Stary wyjadacz :P

szewczyk
Stary wyjadacz :P
Zarejestrowany: 2006-12-03

Koncepcja ACL [PHP][SQL]

Witam
poszukuję sposobu na rozwiązanie ACL w tworzonym CMS ,chciałbym by użytkownikowi mógł przyznawać prawa podobnie jak to jest w forum phpbb3 ,czy zablokować edycje tworzonych postów , nadać dostęp tylko do określonych działów serwisu itp , zapoznałem się z phpgacl ,ale sam skrypt średnio mi się spodobał, ponieważ generuje bardzo dużą ilość zapytań do SQL ,(czasami po 400 )

Offline

 

#2  2011-06-14 12:03:50

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Koncepcja ACL [PHP][SQL]

http://artykuly.zyxist.com/czytaj.php/system_uprawnien_w_php  , pasuje?

3 wynik w google po wpisaniu "php acl". Nie rozumiem jak może być szybciej machnąć posta na forum niż wpisać 2 słowa w googlach.

Offline

 

#3  2011-06-14 18:28:08

  tabi19 - Użytkownik

tabi19
Użytkownik
Skąd: Praszka (Opolskie)
Zarejestrowany: 2010-09-24

Re: Koncepcja ACL [PHP][SQL]

Skoro sam tworzysz CMS, to nie lepiej napisać coś autorskiego, specjalnie na Twoje potrzeby ?

Pozdrawiam

Offline

 

#4  2011-06-15 11:02:58

  jezoo - Dzięcioł

jezoo
Dzięcioł
Skąd: Z lasu
Zarejestrowany: 2005-09-02

Re: Koncepcja ACL [PHP][SQL]

mozesz zastosowac ACL'a z Zend Frameworka


[img]http://intershock.pl/images/icons/freebsd.jpg[/img] [img]http://www.the-eleven.com/site_media/static/img/postgresql_powered.png[/img] [img]http://www.wwgmc.com/images/badge_php.gif[/img]
LRU #480459

Offline

 

#5  2011-06-19 12:53:56

  blinki - Użytkownik

blinki
Użytkownik
Skąd: Wschowa/Gdańsk
Zarejestrowany: 2009-04-09
Serwis

Re: Koncepcja ACL [PHP][SQL]

hmmm.. czy tak trudno dodać kolumnę do bazy z userami o nazwie alevel i do tego klasę regulującą poziomy?

Dlaczego korzystać z gotowców skoro można to zrobić samemu. Jak zrobisz to sam to doskonalisz swój tok rozumowania/programowania. Zresztą jeśli sam to zrobisz kto wie czy nie zrobisz tego lepiej.

Ostatnio edytowany przez blinki (2011-06-19 12:55:48)


Platforma Systemowa: Debian 5.0 lenny | KDE 4.3.2
PC: FS Amilo li 3710 | DualCore 2.0GHz/3GB/Intel GMA X4500
Przeglądarka: Opera (Firefox sux^^)

Offline

 

#6  2011-06-19 17:04:34

  jezoo - Dzięcioł

jezoo
Dzięcioł
Skąd: Z lasu
Zarejestrowany: 2005-09-02

Re: Koncepcja ACL [PHP][SQL]

@blinki, frameworki powstaly po to, aby nie robic 1000x tego samo i zeby szybciej tworzyc oprogramowanie, wlasnie dla tego a jezeli Ty masz czas to prosze bardzo mozesz doktoryzowac


[img]http://intershock.pl/images/icons/freebsd.jpg[/img] [img]http://www.the-eleven.com/site_media/static/img/postgresql_powered.png[/img] [img]http://www.wwgmc.com/images/badge_php.gif[/img]
LRU #480459

Offline

 

#7  2011-06-19 18:09:54

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Koncepcja ACL [PHP][SQL]

Nie ma się co rozwodzić i kłócić, sam autor postu wydaje się nie być zainteresowany.

Offline

 

#8  2011-06-19 23:18:38

  blinki - Użytkownik

blinki
Użytkownik
Skąd: Wschowa/Gdańsk
Zarejestrowany: 2009-04-09
Serwis

Re: Koncepcja ACL [PHP][SQL]

No tak, ale robiąc CMS chcesz wprowadzić coś nowego coś SWOJEGO, używanie gotowców w tym przypadku mija się z celem. Ja bym się lepiej czół jak by zrobił ten system sam (niema co ukrywać ciężki i praco chłonny)

moja wizja by była taka,
SQL

Kod:

create table grupy (`id` int not null auto_increment, `nazwa` varchar(30) not null, `read` text not null, `write` text not null, `lock` text not null, primary key(id))

Kod:

create table członkowie_grup (`id` int not null auto_increment, `user_id` int not null, `grupa_id` int not null, `owner` int not null, primary key (id))

przy tworzeniu i edycji grupy były by check boxy z prawami do elementów frontend'u i backend'u. A potem tylko klasa kontrolująca dostęp do poszczególnych elementów.


Platforma Systemowa: Debian 5.0 lenny | KDE 4.3.2
PC: FS Amilo li 3710 | DualCore 2.0GHz/3GB/Intel GMA X4500
Przeglądarka: Opera (Firefox sux^^)

Offline

 

#9  2011-06-20 08:52:27

  szewczyk - Stary wyjadacz :P

szewczyk
Stary wyjadacz :P
Zarejestrowany: 2006-12-03

Re: Koncepcja ACL [PHP][SQL]

[quote=kamikaze]Nie ma się co rozwodzić i kłócić, sam autor postu wydaje się nie być zainteresowany.[/quote]
sam autor postu w pocie czoła napisał:)

Kod:

CREATE TABLE `acl_action` (
  `id_action` mediumint(8) unsigned NOT NULL auto_increment,
  `id_module` smallint(4) unsigned NOT NULL,
  `action` varchar(32) NOT NULL,
  `inherited` tinyint(1) NOT NULL,
  PRIMARY KEY  (`id_action`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

-- 
-- Struktura tabeli dla  `acl_resources`
-- 

CREATE TABLE `acl_resources` (
  `id_action` mediumint(8) unsigned NOT NULL auto_increment,    -- edit 
  `id_module` smallint(4) unsigned NOT NULL,                    -- post
  `id_resource` int(10) NOT NULL,                                -- id = 10
  `allow` tinyint(1) NOT NULL,
  PRIMARY KEY  (`id_action`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

-- 
-- Struktura tabeli dla  `acl_module`
-- 

CREATE TABLE `acl_module` (
  `id_module` smallint(4) unsigned NOT NULL auto_increment,
  `module` varchar(32) NOT NULL,
  PRIMARY KEY  (`id_module`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

-- 
-- Struktura tabeli dla  `acl_roles`
-- 

CREATE TABLE `acl_roles` (
  `id_group` int(10) unsigned NOT NULL,
  `id_module` smallint(4) unsigned NOT NULL,
  `id_action` mediumint(8) unsigned NOT NULL,
  `allow` tinyint(1) NOT NULL,
  PRIMARY KEY  (`id_group`,`id_module`,`id_action`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



SELECT allow, m.module , a.action 
FROM acl_roles r 

LEFT JOIN acl_module m ON ( r.id_module = m.id_module ) 
LEFT JOIN acl_action a ON ( r.id_action = a.id_action ) 
LEFT JOIN users u ON ( r.id_group = u.group_id ) 
WHERE u.id = 2 
AND m.module = 'admin' 
AND a.action = 'page'

coś takiego znalezionego w necie , na chwile obecną zdaje egzamin ,a dodatkwo wspomagane memcached nie zamula serwera

Offline

 

#10  2011-06-20 09:12:38

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Koncepcja ACL [PHP][SQL]

No i super. Blinki trochę cienka ta twoja wizja i jakby ma niewiele wspólnego z ACL. No i pola text dla checkboxów, ble.

Offline

 

#11  2012-01-15 12:01:29

  szewczyk - Stary wyjadacz :P

szewczyk
Stary wyjadacz :P
Zarejestrowany: 2006-12-03

Re: Koncepcja ACL [PHP][SQL]

[edit]

Ostatnio edytowany przez szewczyk (2012-01-15 18:02:20)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.010 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00009 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00111 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='13.58.18.135' WHERE u.id=1
0.00087 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '13.58.18.135', 1732492902)
0.00056 SELECT * FROM punbb_online WHERE logged<1732492602
0.00055 SELECT topic_id FROM punbb_posts WHERE id=175344
0.00213 SELECT id FROM punbb_posts WHERE topic_id=19165 ORDER BY posted
0.00072 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=19165 AND t.moved_to IS NULL
0.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00085 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=19165 ORDER BY p.id LIMIT 0,25
0.00095 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=19165
Total query time: 0.00792 s