[Cartoweb-users] Edition security (user can edit only his data)
Oliver Christen
oliver.christen at camptocamp.com
Fri Jun 29 08:01:58 EDT 2007
Hi Igor
I suppose you can simply add something like:
$attributesFieldsSql .= ", 'OWNER' ";
$attributesValuesSql .= ", $username";
just before the $sql = sprintf('INSERT INTO ... (~line 267 or so)
----- Original Message -----
From: "Igor Evdokimov" <igev at mail.ru>
To: "Oliver Christen" <oliver.christen at camptocamp.com>
Cc: <cartoweb-users at lists.maptools.org>
Sent: Friday, June 29, 2007 1:41 PM
Subject: Re: [Cartoweb-users] Edition security (user can edit only his data)
>> You can get the current user login with:
>>
>> $sm = SecurityManager::getInstance();
>> $username = $sm->getUser();
>>
>> but Im unsure where exactly you need to add the check. I suppose after
>> the user make a selection with the "edit_sel" tool. That would be on
>> server side, because you need to make the request before knowing what
>> editable object were selected (in selectFeaturesByShape ?). And instead
>> of returning the selected features, return a boolean or something which
>> you would treat on client side to tell the user he has no right on this
>> object. Maybe with a userMessage or you can make something fancier with
>> javascript.
>
>
> Thank You!
>
> I've done it.
>
> This way:
>
> in ServerEdit.php in selectFeaturesByShape()
> I've added this code in the beginning:
>
> ===================================
> protected function selectFeaturesByShape($shapes) {
>
> $sm = SecurityManager::getInstance();
> $username = $sm->getUser();
> $own = $this->getConfig()->editOnlyOwnData;
> if ($own == true)
> $ownstring = sprintf("AND owner='%s'",$username);
> else
> $ownstring = "";
> ...............
> ===================================
>
> in ./server_conf/my_project_name/ I've created file edit.ini :
>
> ===================================
> ; editOnlyOwnData = true; => user can edit only his own added data
> ; editOnlyOwnData = false; => user can edit only all editable data
>
> editOnlyOwnData = true;
> ===================================
>
> And added OWNER field in every editable database.
>
> It was easy with your help!
> I don't need to inform user that he cannot edit other user's data.
> I only need to select this user's own data.
>
> Now I must add code to automatically fill 'OWNER' field
> with user login name when new record created.
> I think it can be done in ServerEdit.php in insertFeature() function?
> Am I right?
>
> Best regards, Igor.
>
More information about the Cartoweb-users
mailing list