Usermanagement Fragen

Im Entwickler-Forum können Implementierungsdetails sowie Alternativen der Umsetzung diskutiert werden. // Here, developers can discuss implementation details of features of their projects.
Antworten
welworx
Beiträge: 620
Registriert: 27.09.2010, 19:29:44

Usermanagement Fragen

Beitrag von welworx » 29.08.2011, 20:08:21

Hi,

ich versuche gerade in einer applikation (mit applikation id) alle benutzer auszulesen die mit einer entsprechenden permission verknüpft sind.

Da ich in der API keine solche funktion gefunden habe möcht ich fragen warum nicht?

Weiters hab ich keine Funktion gefunden um überhaupt eine permission (nicht ein set) mittels Key/Name zu laden. (nur mittels id)

Weiters würde mich interessieren warum man nicht gleich direkt benutzern rechte geben kann, sondern immer den weg über role und permissionset gehen muss? Wäre es nicht oft praktischer das direkt auswählen zu können?

Vlt mach ich das auch einfach nur total falsch, aber unter http://wiki.adventure-php-framework.org ... chtigungen gibts leider keine Anwendung Funktions-Berechtigungen

Dann ist mir ebenfalls aufgefallen, dass ich unter View app objects im Usermanagement Backend nachdem ich mittels Add visibility definition zwei verschiedene Application object ids gesetzt habe nur eine sehen kann. Warum?

Wenn ich das alles richtig verstanden habe, dann kann ich je nach appID und benutzern verschiedene berechtigungen vergeben. Da stellt sich aber gleich die frage wie kann ich permissions mit der app id verknüpfen?


Hoffe ihr könnt mir helfen.

LG Werner

Benutzeravatar
dr.e.
Administrator
Beiträge: 4602
Registriert: 04.11.2007, 16:13:53

Re: Usermanagement Fragen

Beitrag von dr.e. » 30.08.2011, 00:30:29

Hi Werner,
ich versuche gerade in einer applikation (mit applikation id) alle benutzer auszulesen die mit einer entsprechenden permission verknüpft sind.
Da ich in der API keine solche funktion gefunden habe möcht ich fragen warum nicht?
Hierzu gibt es bisher in der API nur die Methode loadUsersWithRole(), nicht aber loadUsersWithPermission(). Das "warum" ist denkbar einfach zu beantworten: es gab bisher noch keine Notwendigkeit (Prinzip: "solution follows function"). Sofern so eine Methode jetzt benötigt wird, können wir diese gerne einbauen. Wenn du möchtest, mache einen Vorschlag, teste diesen und ich intergiere ihn ins SVN. Dann kannst du diese auch in den zukünftigen Versionen nutzen.
Weiters hab ich keine Funktion gefunden um überhaupt eine permission (nicht ein set) mittels Key/Name zu laden. (nur mittels id)
Korrekt. Aktuell ist nur das Laden per Id implementiert. Grund ist identisch zu oben. Nachrüsten jederzeit möglich.
Weiters würde mich interessieren warum man nicht gleich direkt benutzern rechte geben kann, sondern immer den weg über role und permissionset gehen muss? Wäre es nicht oft praktischer das direkt auswählen zu können?
Das wurde bereits als potentielle Verbesserung diskutiert und wird gemäß Roadmap in 1.15 umgesetzt. Ich bin gerade dran, das Datenmodell dahingehend zu aktualisieren und auch die GUI so umzugestalten, dass die neuen Möglichkeiten genutzt werden können. Kurze Zusammenfassung: PermissionSet fliegt raus, Permissions können direkt einer Rolle zugewiesen werden, Rollen und Sichtbarkeitsberechtigungen können Benutzern und Gruppen zugeordnet werden und Sichtbarkeitsberechtigungen haben eine Qualität (Lesen, Schreiben, ...).
Vlt mach ich das auch einfach nur total falsch, aber unter http://wiki.adventure-php-framework.org ... chtigungen gibts leider keine Anwendung Funktions-Berechtigungen
Das ist richtig. Im wesentlichen geht es hier um die Permissions eines Benutzers. Diese kannst du mit loadUserPermissions() abfragen und dann entscheiden, was dem Benutzer angezeigt wird. Mehr ist das an und für sich nicht.
Dann ist mir ebenfalls aufgefallen, dass ich unter View app objects im Usermanagement Backend nachdem ich mittels Add visibility definition zwei verschiedene Application object ids gesetzt habe nur eine sehen kann. Warum?
Das ist in der Tat komisch. Kannst du mal in der Datenbank nachsehen, ob dort u.U. nur ein Eintrag existiert. Die relevante Tabelle ist hier ent_appproxy.
Wenn ich das alles richtig verstanden habe, dann kann ich je nach appID und benutzern verschiedene berechtigungen vergeben. Da stellt sich aber gleich die frage wie kann ich permissions mit der app id verknüpfen?
Die applicationId ist die Identifikation einer Instanz des Usermanagements. Du kannst damit auf einer Datenbank mehrere Applikationen betreiben ohne, dass du zwei Sätze an Tabellen anlegen musst. Die Id ist jedoch nicht für den Umgang mit der Benutzer-Verwaltung selbst gedacht, da sie bei der Vergabe der Berechtigungen keinen Einfluss hat und haben darf. Insofern wird im Hintergrund eine Komposition einer Permission mit einem Application-Objekt selbständig vom UmgtManager erzeugt. Diese ist für dich jedoch nicht von Bedeutung, sondern dient nur der Zuordnung zu einer definierten Applikation.

Ich hoffe, ich konnte dir helfen.
Viele Grüße,
Christian

welworx
Beiträge: 620
Registriert: 27.09.2010, 19:29:44

Re: Usermanagement Fragen

Beitrag von welworx » 30.08.2011, 01:14:03

ja konntest mir helfen :D

loadUsersWithPermission
und
loadPermissionByKey

werd ich in den nächsten tagen mal schreiben.


wenn du schon das Datenmodell änderst hätte ich noch eine Idee :D

Wäre es möglich alle anzuzeigenden Texte in einer eigenen Sprachabhängigen Tabelle zu speichern und alles entsprechend zu verknüpfen? (eigentlich handelt es sich ja immer nur um die Felder Displayname) Damit könnte man eine schöne sprachunabhängige Benutzerverwaltung schaffen.

Als Sprachtabelle würd ich sowas vorschlagen:

Code: Alles auswählen

CREATE TABLE IF NOT EXISTS `ent_language` (
  `LanguageID` int(5) unsigned NOT NULL AUTO_INCREMENT,
  `iso_code` varchar(5) NOT NULL DEFAULT '',
  `CreationTimestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `ModificationTimestamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`LanguageID`),
  UNIQUE KEY `isocodeUNIQUE` (`iso_code`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; 

Benutzeravatar
dr.e.
Administrator
Beiträge: 4602
Registriert: 04.11.2007, 16:13:53

Re: Usermanagement Fragen

Beitrag von dr.e. » 30.08.2011, 12:19:30

Hi,

sprichst du hier die Oberfläche an oder die Eingaben an den jeweiligen Objekten? Die Oberfläche soll im Rahmen der Weiterentwicklung internationalisiert werden.
Viele Grüße,
Christian

welworx
Beiträge: 620
Registriert: 27.09.2010, 19:29:44

Re: Usermanagement Fragen

Beitrag von welworx » 01.09.2011, 01:23:18

hi,

ich speche eigentlich die objekte an.

Es wäre generell sehr praktisch, wenn man von haus aus mittels gorm für ein und das selbe objekt inhalte in verschiedenen sprachen ablegen könnte.

dass das mit verknüpfungen geht ist mir klar, aber so muss man immer mindestens 3 objekte haben (basisobjekt, sprache, inhalt)

LG

Benutzeravatar
dr.e.
Administrator
Beiträge: 4602
Registriert: 04.11.2007, 16:13:53

Re: Usermanagement Fragen

Beitrag von dr.e. » 01.09.2011, 22:35:45

Ich nehme das Thema mal als Punkt in die Roadmap auf. Wenn du Zeit hast, kannst du dir ja schon mal Gedanken machen und im Wiki ein Proposal schreiben.
Viele Grüße,
Christian

welworx
Beiträge: 620
Registriert: 27.09.2010, 19:29:44

Re: Usermanagement Fragen

Beitrag von welworx » 02.09.2011, 17:00:07

Hier mal der einfache Code für loadPermissionsByName

Code: Alles auswählen

  /**
    * Loads a permission by it's name.
    * 
    * @param string $Name
    * @return GenericORMapperDataObject 
    * 
    * @author Werner Liemberger
    * @version
    * Version 0.1, 2.9.2011 <br >
    */
   public function loadPermissionsByName($Name){
       $oRM = &$this->getORMapper();
       $crit = new GenericCriterionObject();
       $crit->addPropertyIndicator('Name',$Name);
       return $oRM->loadObjectListByCriterion('Permission',$crit);
   } 
Passt das so?


Für den loadUsersWithPermission Code habe ich ein paar fragen.

1.) Kann man in zukunft Benutzer direkt mit permissions verknüpfen (Permission2User)?
2.) Kann man Gruppen mit Permissions verknüpfen? (Permission2Group)
3.) Wirds in Zukunft Role2Permission geben, anstelle von Role2PermissionSet?
4.) Habe ich Verknüpfungsmöglichkeiten vergessen?

Benutzeravatar
dr.e.
Administrator
Beiträge: 4602
Registriert: 04.11.2007, 16:13:53

Re: Usermanagement Fragen

Beitrag von dr.e. » 03.09.2011, 22:32:07

Hallo Werner,

sollte die Methode nicht eine Permission laden? Mehrere mit dem gleichen Namen machen doch keinen Sinn, oder? Weiterhin werden alle Permissions aller Applikationen geladen. Aus diesem Grund wird noch eine Einschränkung auf die Beziehung Application2Permission mit der aktuellen Applikation notwendig.
1.) Kann man in zukunft Benutzer direkt mit permissions verknüpfen (Permission2User)?
Aktuell nicht, zukünftig ist es noch nicht angedacht.
2.) Kann man Gruppen mit Permissions verknüpfen? (Permission2Group)
Nein, aber mit einer Rolle.
3.) Wirds in Zukunft Role2Permission geben, anstelle von Role2PermissionSet?
Exakt.
4.) Habe ich Verknüpfungsmöglichkeiten vergessen?
Ja, es gibt noch einige weitere. Hier das neue UML:
usermanagement_domain_model.png
usermanagement_domain_model.png (54.29 KiB) 1860 mal betrachtet
Viele Grüße,
Christian

welworx
Beiträge: 620
Registriert: 27.09.2010, 19:29:44

Re: Usermanagement Fragen

Beitrag von welworx » 03.09.2011, 22:53:40

sollte die Methode nicht eine Permission laden
.. lange getüftelt was du meinst ;) .. hab mir bei der methode einfach nur vertippt.

sollte loadPermissionByName heißen. (in der beschreibung wars eh richtig drin ;))

das mit der Application2Permission macht sinn, das fehlt.
Ja, es gibt noch einige weitere.
... welche sollen das sein? Ich seh nur, dass man die role mit der permission verknüpfen kann und die vergessene Application2Permission.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4602
Registriert: 04.11.2007, 16:13:53

Re: Usermanagement Fragen

Beitrag von dr.e. » 04.09.2011, 12:01:48

Hi,
Ja, es gibt noch einige weitere.
... welche sollen das sein? Ich seh nur, dass man die role mit der permission verknüpfen kann und die vergessene Application2Permission.
Ach so, deine Frage war auf deine Methode bezogen. :D Da gibt es keine weiteren.
Viele Grüße,
Christian

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste