Announcement

Collapse
No announcement yet.

Aktueller USER und ROLE

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Aktueller USER und ROLE

    Hallo,

    über die Variable "USER" bzw. über "SELECT USER FROM RDB$DATABASE" habe ich ja die Möglichkeit den angemeldeten Benutzer zu ermitteln. Ist es auch möglich zu ermitteln, mit welcher "ROLE" er sich angemeldet hat?

    Ich möchte die Rechte eines Benutzers an einer Stored Procedure über die Systemtabelle RDB$USER_PRIVILEGES abfragen. Wenn ich die Rechte aber der Role gebe und die dem Benutzer zuordne, werden in der Systemtabelle nur die Rechte für die ROLE vermerkt. Ich kann die Rechte des angemeldeten Benutzers also nur abfragen, wenn ich auch weiß mit welcher ROLE er sich angemeldet hat.

    Gruss
    Ralf

  • #2
    Hallo Ralf,

    nach meinen bisherigen Nachforschungen scheint man diese Info nicht so ohne weiteres zu erhalten.

    Mit dem FireBird-Server soll es ab Build(281) die Variable Current_role geben.

    Den einzigen Weg den ich sehe um an die Role zu kommen führt über eine UDF. Diese UDF muß dann per API-Aufruf über die gds32.dll die aktive Role erfragen (diese Methode ist bis jetzt aber nur eine Vermutung - vielleicht habe ich am Wochenende genug Zeit das mal zu testen).

    Tschüß

    Torste

    Comment


    • #3
      Hallo Ralf,

      in der GDS32.DLL habe ich keine passende Funktion gefunden. Allerdings könnte man die folgende Alternative verwenden:

      Vor dem Anzeigen der gesuchten Daten könntest Du testweise ein separates Select auf die problematische StoredProc ausführen. Das Ganze dann in einen <b>try except Block</b> verpacken und im except Teil auf den IB-Errorcode <b>isc_no_priv</b> testen. Über einen Parameter kannst Du dann der StoredProc mitteilen welches Select ausgeführt werden soll (komplette Datenanzeige bzw. eingeschränkte Datenanzeige).

      Tschüß

      Torste

      Comment


      • #4
        Hallo Torsten,

        erstmal vielen Dank für die Mühe. Ich werde wohl die Lösung mit der Exception und dem Parameter implementieren.

        Gruss
        Ral

        Comment


        • #5
          Hi,

          Um die Role in der eigenen Applikation zu ermitteln könntest Du aber auch die Komponente IBSecurityService verwenden.

          Gruß
          Gesin

          Comment


          • #6
            Hallo Gesine,

            wie willst Du das mit dieser Komponente realisieren?
            Nach meiner Kenntnis geht das nicht, aber vielleicht habe ich auch was übersehen.

            Tschüß

            Torste

            Comment


            • #7
              Hallo,<br>
              falls Firebird 0.9.5 Build 250 od. höher eingesetzt wird, kann ein neues Schlüsselwort CURRENT_ROLE verwendet werden. In Interbase ist dies nicht möglich.<br><br>
              Thoma
              Thomas Steinmaurer

              Firebird Foundation Committee Member
              Upscene Productions - Database Tools for Developers
              Mein Blog

              Comment


              • #8
                <achtung ironie>
                jubel trubel heiterkeit, die erste mir bekannte inkompatibilität zwischen InterBase und InterBase.

                wir werden dieses schöne schlanke datenbanksystem schon noch klein kriegen.
                </achtung ironie>

                p.s. sorry ich konnte nicht anders, mehr dazu beim bierchen auf der konferenz

                Comment


                • #9
                  Hallo Andreas,<br>
                  mir war IMMER klar, dass sich früher oder später (eher früher) Interbase 6 und Firebird (v1.0) unterscheiden werden. Ein kurzer Ausschnitt daraus, was an zusätzlicher Funktionalität in den aktuellsten Builds von Firebird drinnen ist.
                  <ul>
                  <li>16 KB Page Size</li>
                  <li>DROP GENERATOR</li>
                  <li>RECREATE TABLE</li>
                  <li>GROUP BY UDF()</li>
                  <li>TCP Port 3050 used by default</li>
                  <li>TCP Port in connect string</li>
                  <li>...</li>
                  </ul>
                  <br>
                  Thoma
                  Thomas Steinmaurer

                  Firebird Foundation Committee Member
                  Upscene Productions - Database Tools for Developers
                  Mein Blog

                  Comment


                  • #10
                    dir war es klar, mir irgendwie auch, es ist ja noch nie anders gekommen, die krönung wird irgendwann sein, das wir inkompatible Dateisysteme bekommen und beide Produkte nicht gleichzeitg auf die Maschine passen.

                    Was tut man nicht alles zur Stärkung eines Datenbanksystems

                    Comment


                    • #11
                      Hallo,

                      da kann ich meinem Vorredner nur zustimmen, zumal Jeff Overcash angekündigt hat, das die IBX-Komponenten <b>nur</b> die Borland-Version vom InterBase berücksichtigen. Somit besteht der Super-GAU darin, das irgendwann einmal eine EXE vor Ort nicht läuft, weil der "falsche" InterBase 6 installiert ist

                      Comment


                      • #12
                        Wenn der Jeff sowas ankündigt, ob seiner nähe zu Borland (oder ist er gar ein Borländer) auch verständlich und Borland bei lizensiertem "OpenSource" bleibt, hat sich die Geschicht mit der Open Source Datenbank (glücklicherweise ?) wohl bald erledigt.

                        Oder

                        Comment


                        • #13
                          Tja, da muss man sehen wie man als Entwickler von IB/FB-related Tools (wie ich einer bin) dann zurecht kommt. Ich bin schon gespannt wie andere Hersteller von Datenzugriffskomponenten (IBO, FIBPlus) auf den geteilten Markt reagieren werden. IBO soll laut Jason IB und FB unterstützen. Bin schon gespannt!<br><br>
                          Thomas<br>
                          PS: Ich würd sagen in ein paar Monaten (od. früher) haben wir in IB6 und FB unterschiedliche ODS-Versionen :-)
                          Thomas Steinmaurer

                          Firebird Foundation Committee Member
                          Upscene Productions - Database Tools for Developers
                          Mein Blog

                          Comment


                          • #14
                            Das Problem sehe ich nicht bei unserem Tool (InterBase Replication Demon), das kann man sicherlich gegen beide Systeme kompatibel halten, insbesondere wenn IBO beide unterstützt.

                            Das Problem sind vielmehr die 2000 Installation einer auf InterBase basierenden Branchenlösung, wo ich dann nicht mehr so genau weiß, was die Kunden vor Ort treiben, ich das aber alles supporten muß

                            Comment


                            • #15
                              Hi,

                              Zu der Problematik fällt mir folgendes ein:

                              1)
                              Borland ist auf eine <b>freie</b> Version einer leistungsfähigen DB angewiesen um konkurrenzfähig zu bleiben. Ein grosser Kundenkreis ( z.B. die 'Hobbyentwickler' ) von Borland legt m.E. viel Wert auf eine kostenneutrale Datenbank. Ausserdem ist es auch im professionellen Umfeld sehr schön, kleineren Unternehmen Anwendungen anbieten zu können, die auf einer kompakten, zuverlässigen und leistungsfähigen Datenbank aufbauen, ohne gleich einen der dicken und teuren Verwandten von Interbase mit verkaufen zu müssen. Es ist irgendwie schwierig einem solchen Unternehmen klar zu machen, dass die Applikation die es kaufen soll zwar nur 5.000.- Mark kostet, die Datenbank die dahinter steht aber 19.000.-. Das nötige Knowhow für die 'Wartung' mal gar nicht gerechnet. Deshalb wird es Interbase solange geben, wie es Borland gibt bzw. eine bessere, ebenfalls freie DB verfügbar ist. Was zählt schon eine Entwicklungsumgebung ohne leistungsfähige Datenbank ??

                              2)
                              Das dieses Datenbank auch noch Opensource ist, ist in dieser Hinsicht zumindestens eine vertrauensbildende Massnahme und hat noch weitere nur positive Aspekte.

                              3)
                              Wenn andere auf der Basis dieser DB dann Verbesserungen implementieren ( ist auch nur logisch, wenn man aus dem gleichen Stall kommt ) und damit ein neues Produkt kreieren, können die Entwickler doch immer noch entscheiden, ob die damit gelieferten 'Gimmicks' so viel Wert sind, dass es sich lohnt umzusteigen oder beide Versionen zu unterstützen.

                              4)
                              Passen beide Versionen mal nicht mehr zusammen, dann gibt es neben der Vielzahl anderer DB-Systeme eben noch eins mehr. Was man supporten will/kann muss doch jeder für sich entscheiden. Das Problem hat man doch schon heute, wenn ein Kunde sagt, 'Ich setze Oracle ein.'. Baut man dann seine auf IB basierende Anwendung um ???

                              Also wo ist das Problem ???

                              Gruß
                              Gesine

                              P.S.

                              Zum anfänglichen Problem: IBSecurityService hat eine Property Role. Damit kann man die Rolle setzen oder abfragen. Um die Rolle geliefert zu bekommen muss man allerdings mit dieser angemeldet sein. Bin ich bereits mit einer Rollenagabe angemeldet muss ich nich' mehr danach fragen, denn cih kenn sie schon... usw. usf.

                              Comment

                              Working...
                              X