====== TPSR Rechte ====== Die Aufteilung in Lese- und Schreibrechte ist nicht zwingend korrekt. Ein Recht ((privilege)) kann auch als Lese- und Schreibrecht verwendet werden. Es ist aber übersichtlicher, wenn man die Rechte entsprechend aufteilt. Rechte, die eine doppelte Rolle spielen, werden entsprechend zugeordnet, bzw. gekennzeichnet. ===== Rechte und Autorisierung ===== Es ist auch wichtig zwischen Rechten und der Autorisierung der Rechte zu differenzieren. Die **Anwendung** definiert die Rechte indem man für die Anwendung sinnvollerweise bestimmt, welche Rechte für welche Lese- und Schreib-Aktionen notwendig sind. Der **Autorisierer** bestimmt, wie diese Rechte genehmigt werden. \\ \\ Teamrollen eines Mitarbeiters lesen zu dürfen hängt dabei z.B. sinnvollerweise vom Mitarbeiter ab, nicht von der Rolle. Wenn ich mir dann die Mitarbeiter zu einer Rolle angucken möchte, sehe ich auch nur die Mitarbeiter, für die ich das Recht habe, die Teamrollen zu sehen. \\ \\ Eine Teamrolle für einen Mitarbeiter anlegen ((schreiben)) zu können hängt aber vom Mitarbeiter **und** der Rolle ab. Ein Betreuer soll keinen Einrichtungsleiter anlegen dürfen. Anders herum aber doch. Es könnte auch nur von der Rolle abhängen, und nicht vom Mitarbeiter, also komplett umgekehrt als bei den Leserechten. \\ \\ Die Rechte zu bestimmen ist also eher eine //Kunst// als ein rein logischer, bzw. technischer Vorgang. \\ \\ Zu unterscheiden ist die Autorisierung von der Bestimmung der Rechte. Die Autorisierung wird auf vorhanden Rechte gemacht. Die Rechtebestimmung wird in der **Anwendung** vorgenommen, die Autorisierung der Rechte in dem **Autorisierer**. Der Autorisierer ist dabei abhängig von der Anwendung, aber nicht anders herum. \\ \\ Wie ein Recht autorisiert wird ist dem Autorisierer völlig überlassen. Er kann Rechte auf Mitarbeiterebene direkt auf dieser Ebenen autorisieren. Er kann sie aber auch für alle Mitarbeiter autorisieren die eine bestimmte Rolle in der Einrichtung, in einem Team des Mitarbeiter haben, usw. ==== Flexibilität ==== Um es sich in der Anwendung einfach zu machen, kann man Rechte immer für alle Entitäten bestimmen, die irgendwie betroffen sind. Eine Mitarbeiterrolle lesen oder schreiben zu können kann somit immer von dem Mitarbeier und der Rolle abhängen. Die Autorisierer können dann bestimmen, ob sie das Recht auf Mitarbeiterebene, auf Rollenebene, oder für eine Kombination der beiden vergeben. \\ \\ Diese Flexibilität in der Rechtevergabe macht die Rechtebestimmung in der Anwendung wesentlich leichter, weil die Anwendung sich //keine Gedanken// darüber machen muss, wie ein Recht eventuell vergeben werden kann, bzw. wovon es abhängen kann, sondern einfach alles in das Recht //rein wirft// was vorhanden ist. \\ \\ So wird es dann auch i.d.R. gemacht werden, weil es erstens auf Ebene der Anwendung einfacher ist, und den Autorisierern viel mehr Flexibilität bietet, wie sie das Recht letzt Enendes vergeben möchten. ==== Implizierte Rechte ==== Jetzt wird es richtig cool 8-). Die Anwendung, nicht die Autorisierer, kann bestimmen, welche Rechte andere implizieren. Wenn ich z.B. das Leserecht für alle Team Rollen eines Mitarbeiters habe, impliziert dieses Recht das Recht die Kopfdaten der betroffenen Teams lesen zu dürfen. Warum auch nicht? Wenn ich die Kopfdaten dieser Teams in den Mitarbeiter Stammdaten eh lesen darf, warum dann nicht auch an anderen Stellen, z.B. in der Übersicht aller Teams. \\ \\ Da das Autorisierungs-Framework für jede Rechteanfrage antwortet mit //genehmigt//, //nicht genehmigt// und //bedingt genehmigt//, kann man dem Mitarbeiter in der Liste der Teamrollen anzeigen, dass die Liste u.U. unvollständig ist, weil sie nur bedingt genehmigt ist, falls nur die Teams der Mitarbeiter angezeigt werden, für die der User Leserechte auf die Teamzuordnung hat. \\ \\ Dabei prüft der Autorisierer immer erst die direkt vergebenen Rechte, danach die implizierten Rechte, weil die direkt vergebenen Rechte meist, wenn nicht immer, einfacher, bzw. schneller genehmigt werden. ===== TPSR Applikation ===== ==== Mandant: TPSRAERM.EntityTypes.Tenant ==== === Leserechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |Fehlanzeige|||| === Schreibrechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.Tenant.TenantWritePriv|||| ==== Domäne: TPSRAERM.EntityTypes.TenantDomain ==== Hinweis: Das gehört eigentlich in die Authenfizierung === Leserechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |Fehlanzeige|||| === Schreibrechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.TenantDomain.TenantDomainWritePriv|TPSRAERM.EntityTypes.Tenant||| ==== Mitarbeiter: TPSRAERM.EntityTypes.StaffMember ==== === Leserechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.StaffMember.StaffMemberIdentifierReadPriv|||| |TPSRPrivilege.StaffMember.StaffMemberDetailsReadPriv|||| === Schreibrechte === ^Recht^abweichende Bezugsentität ^Implizierte Rechte^ |TPSRPrivilege.StaffMember.NewStaffMemberPriv|TPSRAERM.EntityTypes.Tenant||| |TPSRPrivilege.StaffMember.StaffMemberWritePriv|||| |TPSRPrivilege.StaffMember.DeactivatePriv|||| ==== Teams: TPSRAERM.EntityTypes.Team ==== === Leserechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.Team.TeamIdentifierReadPriv|||| |TPSRPrivilege.Team.TeamDetailsReadPriv|||| === Schreibrechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.Team.NewTeamPriv|TPSRAERM.EntityTypes.Tenant||| |TPSRPrivilege.Team.TeamWritePriv|||| |TPSRPrivilege.Team.AdministerClientsOfTeamPriv|||| ==== Klienten: TPSRAERM.EntityTypes.Client ==== === Leserechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.Client.ClientHeadDataReadPriv|||| |TPSRPrivilege.Client.ClientDetailsReadPriv|||| === Schreibrechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.Client.NewClientPriv|TPSRAERM.EntityTypes.Tenant||| |TPSRPrivilege.Client.ClientWritePriv|||| |TPSRPrivilege.Client.AdministerClientsOfTeamPriv|||| ==== Selbstbewertung: TPSRAERM.EntityTypes.SelfQuestionnaire ==== === Leserechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.SelfQuestionnaire.SelfQuestionnaireHeadDataReadPriv|||| |TPSRPrivilege.SelfQuestionnaire.SelfQuestionnaireContentReadPriv|||| === Schreibrechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.SelfQuestionnaire.StartSelfQuestionnairePriv|TPSRAERM.EntityTypes.Client||| |TPSRPrivilege.SelfQuestionnaire.SelfQuestionnaireHeadDataWritePriv|||| |TPSRPrivilege.SelfQuestionnaire.FillOutSelfQuestionnairePriv|||| ==== Fremdbewertung: TPSRAERM.EntityTypes.ReferenceQuestionnaire ==== === Leserechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.ReferenceQuestionnaire.ReferenceQuestionnaireHeadDataReadPriv|||| |TPSRPrivilege.ReferenceQuestionnaire.ReferenceQuestionnaireContentReadPriv|||| === Schreibrechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.ReferenceQuestionnaire.StartReferenceQuestionnairePriv|TPSRAERM.EntityTypes.Client|Das Recht eine Bewertung für einen Klienten zu starten. Dabei muss man auch das Recht haben, den Mitarbeiter dazu anzugeben. Man könnte daraus 2 Rechte machen, aber Autorisierer können die Bezugsentitäten getrennt autorisieren, wenn sie möchten || |:::|TPSRAERM.EntityTypes.StaffMember|:::|:::| |TPSRPrivilege.ReferenceQuestionnaire.ReferenceQuestionnaireHeadDataWritePriv|||| |TPSRPrivilege.ReferenceQuestionnaire.FillOutReferenceQuestionnairePriv|||| ==== Team Rollen: TPSRAERM.EntityTypes.TeamRole ==== === Leserechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.TeamRole.TeamRoleIdentifierReadPriv|||| |TPSRPrivilege.TeamRole.TeamRoleDetailsReadPriv|||| === Schreibrechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.Tenant.NewTeamRolePriv|TPSRAERM.EntityTypes.Tenant||| |TPSRPrivilege.TeamRole.TeamRoleWritePriv|||| ==== Betreuer Rollen: TPSRAERM.EntityTypes.CustodianRole ==== === Leserechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.CustodianRole.CustodianRoleIdentifierReadPriv|||| |TPSRPrivilege.CustodianRole.CustodianRoleDetailsReadPriv|||| === Schreibrechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.Tenant.NewCustodianRolePriv|TPSRAERM.EntityTypes.Tenant||| |TPSRPrivilege.CustodianRole.CustodianRoleWritePriv|||| ==== Mitarbeiter-Einrichtungsrollen Zuordnung: keine eigene Entität im AERM ((Authorization Entity Relationship Model)) ==== === Leserechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.AssignedTenantRole.StaffTenantRoleReadPriv|TPSRAERM.EntityTypes.StaffMember||| === Schreibrechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.AssignedTenantRole.StaffTenantRoleWritePriv|TPSRAERM.EntityTypes.StaffMember||| ==== Mitarbeiter-Teamrollen Zuordnung: keine eigene Entität im AERM ((Authorization Entity Relationship Model)) ==== === Leserechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.AssignedTeamRole.StaffTeamRoleReadPriv|TPSRAERM.EntityTypes.StaffMember||| |TPSRPrivilege.AssignedTeamRole.TeamStaffRoleReadPriv|TPSRAERM.EntityTypes.Team||| === Schreibrechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.AssignedTenantRole.StaffTeamRoleWritePriv|TPSRAERM.EntityTypes.StaffMember||| |TPSRPrivilege.AssignedTenantRole.TeamWithTeamRoleWritePriv|TPSRAERM.EntityTypes.Team||| |:::|TPSRAERM.EntityTypes.TeamRole||| ==== Mitarbeiter-Betreuer Zuordnung: keine eigene Entität im AERM ((Authorization Entity Relationship Model)) ==== === Leserechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.AssignedCustodianRole.ClientCustodianRoleReadPriv|TPSRAERM.EntityTypes.Client||| |TPSRPrivilege.AssignedCustodianRole.StaffCustodianRoleReadPriv|TPSRAERM.EntityTypes.StaffMember||| === Schreibrechte === ^Recht^abweichende Bezugsentität^Bescheibung^Implizierte Rechte^ |TPSRPrivilege.ClientCustodianRoleWritePriv.StaffTenantRoleWritePriv|TPSRAERM.EntityTypes.Client||| |:::|TPSRAERM.EntityTypes.CustodianRole||| |TPSRPrivilege.AssignedCustodianRole.StaffCustodianRoleWritePriv|TPSRAERM.EntityTypes.StaffMember||| ===== TPSR Authentifizierung ===== ===== TPSR Autorisierung =====