• 脚本实现权限控制


    脚本实现权限控制

    功能权限和数据权限通过脚本来实现,异常简单。

    function TfrmFunction.rights(bar: TUniToolBar; funcid: string; dataset: TClientDataSet = nil; grid: TUniDBGrid = nil): Boolean;
    // 权限脚本用于设置没有哪项权限
    var
    i: integer;
    script: string;
    fs: TfsScript;
    begin
    // 获取角色权限脚本
    if UniServerModule.cdsRolerRights.Locate('rolerid;funcid', VarArrayOf([gUser.rolerid, funcid]), []) then
    script := UniServerModule.cdsRolerRights.FieldByName('rightsscript').Text;
    if script = '' then
    begin
    Result := True;
    exit;
    end;
    fs := TfsScript.Create(nil);
    try
    // 功能权限
    fs.Clear;
    if bar <> nil then
    begin
    fs.AddRTTI;
    fs.AddClass(TUniToolButton, 'TUniToolButton');
    for i := 0 to bar.ControlCount - 1 do
    begin
    if bar.Controls[i] is TUniToolButton then
    fs.AddObject(bar.Controls[i].Name, TUniToolButton(bar.Controls[i]));
    end;
    end;
    // 数据权限
    if dataset <> nil then
    begin
    fs.AddRTTI;
    fs.AddClass(TClientDataSet, 'TClientDataSet');
    fs.AddObject(dataset.Name, dataset);
    for i := 0 to dataset.FieldCount - 1 do
    fs.AddObject(dataset.Fields[i].Name, TField(dataset.Fields[i]));
    end;
    // 处理begin..end.
    script := 'begin ' + script;
    script := script + ' end.';
    fs.Lines.Add(script);
    Result := fs.Run;
    // 表格列是否可视
    if Result and (grid <> nil) then
    for i := 0 to grid.Columns.Count - 1 do
    grid.Columns[i].Visible := DataSet.FieldByName(grid.Columns[i].FieldName).Visible;
    finally
    fs.Free;
    end;
    end;

  • 相关阅读:
    [NOIP2013]花匠
    [NOIP2013]货车运输
    [NOIP2013]火柴排队
    [NOIP2012]疫情控制
    雷动WEBRTC产品
    WebRTC学习笔记_Demo收集
    Red5的直播与点播的压力测试(并发数的测试)
    Apache Tomcat8必备知识
    Servlet3.0学习总结(一)——使用注解标注Servlet
    一张图讲清楚高可用、高性能、可扩展的WEB系统架构
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/6392937.html
Copyright © 2020-2023  润新知