【问题标题】:Oracle Apex referencing User GroupsOracle Apex 引用用户组
【发布时间】:2013-07-31 10:18:26
【问题描述】:

我正在尝试构建一个将在 6 个工作站点中使用的应用程序。我希望在同一个申请中提交所有员工的详细信息,并且每个员工都会有一个分配给他们的“站点”(他们工作的城市)。当该站点的经理使用该应用程序时,我希望他们只看到他们有权访问的站点中的员工。

我已经为此苦苦挣扎了一段时间。 我已经设置了所有表格和页面,以便可以看到所有员工。 我创建了用户组并将不同的用户分配给不同的组(站点)。我不知道如何限制访问甚至引用用户分配到的组。

我们将不胜感激有关此主题的任何帮助。

提前谢谢你

【问题讨论】:

  • 您正在使用通过 apex 本身的用户管理定义的用户和用户组?

标签: oracle-apex


【解决方案1】:

我自己找到了合适的解决方案。我创建了一个名为“Tbl_000_UserAccess”的表 在此表中有 3 列(ID、USER ID、Site ID)。

我将用户和他们可以查看的站点 ID 添加到此表中。

然后我在员工表上创建一个视图,将记录限制为当前用户的用户 ID。这是我为任何感兴趣的人编写的视图编码:

创建或替换 FORCE VIEW “Vw_010_Staff”(“ID”、“Emp No.”、“First Name”、“Last Name”、“Team Leader”、“Coach”、“JE”、“CD”、“ IRE"、"FAM"、"GB"、"GST"、"Emp"、"SLS"、"Bus RADC"、"KS Ind"、"KS N Ind"、"Anon"、"OB"、"Resigned" , "原因", "网站") AS 选择“Tbl_010_Staff”。“ID”作为“ID”, "Tbl_010_Staff"."Employee Number" 为 "Emp No.", “Tbl_010_Staff”。“名字”为“名字”, “Tbl_010_Staff”。“姓”为“姓”, "Tbl_011_TeamLeaders"."名字" || ' ' || “Tbl_011_TeamLeaders”。“姓”为“团队负责人”, "Tbl_012_Coaches"."名字" || ' ' || “Tbl_012_Coaches”。“姓”为“教练”, "Tbl_014_JE"."JE" 为 "JE", “Tbl_010_Staff”。“客户详细信息”为“CDstuff”, “Tbl_010_Staff”。“IR Essentials”为“IRE”, “Tbl_010_Staff”。“家庭税收抵免”为“FAM”, “Tbl_010_Staff”。“一般业务”为“GB”, "Tbl_010_Staff"."GST" 为 "GST", "Tbl_010_Staff"."Employers" 为 "Emp", “Tbl_010_Staff”。“学生贷款”为“SLS”, "Tbl_010_Staff"."Business Receivables" 为 "Bus RADC", “Tbl_010_Staff”。“Kiwi Saver Ind”为“KS Ind”, “Tbl_010_Staff”。“Kiwi Saver NonInd”为“KS N Ind”, “Tbl_010_Staff”。“匿名”为“Anon”, “Tbl_010_Staff”。“出站”为“OB”, “Tbl_010_Staff”。“非活动”为“已辞职”, “Tbl_010_Staff”。“非活动原因”为“原因”, “Tbl_010_Staff”。“站点”为“站点”

from (((("Tbl_010_Staff" left outer join "Tbl_011_TeamLeaders" on "Tbl_010_Staff"."Team Leader" = "Tbl_011_TeamLeaders"."ID")
    left outer join "Tbl_012_Coaches" on "Tbl_010_Staff"."Coach" = "Tbl_012_Coaches"."ID")
left outer join "Tbl_014_JE" on "Tbl_010_Staff"."JE" = "Tbl_014_JE"."ID")
left outer join "Tbl_000_UserAccess" on "Tbl_010_Staff"."Site" = "Tbl_000_UserAccess"."SiteID")

**where "Tbl_000_UserAccess"."SiteID" =
(Select "Tbl_000_UserAccess"."SiteID" 
    from "Tbl_000_UserAccess"
    where "Tbl_000_UserAccess"."UserID" = NVL(v('APP_USER'),USER))**

这非常有效。唯一令人烦恼的是,当将用户添加到架构中时,我还需要在 useraccess 表中添加一条记录。 请注意,UserID 区分大小写

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多