액세스 매트릭스 - 역할 목록을 사용자 목록에 할당

데이터베이스에 사용자가 만 명이 넘으면 표준 IRIS 인터페이스를 통해 그룹 접근 권한을 분배하는 데 시간이 많이 걸리고 불편해진다.이 글에서 이 과정을 자동화하는 프로그램을 소개하고 싶습니다.
사용자의 역할 목록을 할당하고 변경하는 방법을 보여 드리며, 상하문에 따라 선택할 것입니다. 이 프로그램의 기능을 확장하는 방법을 보여 드리겠습니다.당신은 관리자와 개발자의 업무를 검증된 apptools 소프트웨어 복합체의 새로운 기능에 어떻게 응용하는지 알고 있습니다.adminLTE 템플릿을 추가하면 모든 실체와 많은 기능 모듈에 인터페이스 상호작용을 신속하고 쉽게 만들 수 있습니다.
이 패키지를 개발하는 목적은 가능한 한 자바스크립트를 적게 작성하고 ObjectScript에서 가능한 한 많은 움직임을 전송하고 실현하는 것입니다.

패널 설명


현재 제작 중인 관리 패널에는 단일 페이지 애플리케이션(SPA)의 고전적인 구조가 있습니다.브라우저 창의 크기를 조정하면 왼쪽의 2단계 메뉴 모음이 축소되고 크기가 조정됩니다.탐색 패널에는 마지막 요소에 세션 종료 지점이 있는 계정 그룹이 있는 두 개의 최상위 메뉴가 있습니다.
instructions에 따라 어떤 방식으로든 apptools 관리 프로그램을 설치하면 가장 간단한 방법은 ZPM 패키지 관리자를 사용하는 것이다.
응용 프로그램을 볼 수 있습니다: http://you-host:52773/apptoolsrest/a/permiss.

모든 메뉴 항목을 클릭하면 가장 큰 내용 영역에 탭이 만들어지고 이 탭에 상호 작용하는 인터페이스 구성 요소가 표시되는 방법이 시작됩니다.탭이 작성된 경우 메뉴 항목을 클릭하여 활성화합니다.탭을 닫을 수 있습니다.
탭의 HTML 요소 이름은 메뉴 항목의 ID에 따라 달라지며 인접한 탭과는 교차하지 않습니다.

응용 프로그램 만들기


프로그램을 만들려면 먼저 apptools 클래스에서 템플릿을 복사하십시오.lte.니 이름으로 허락해.
메뉴 세트와 관련 탭 세트가 opt≠ClassMethod GetAllApps 배열에 의해 조정되는 원리입니다.
ClassMethod GetAllApps(opt) As %Status
{
    ;side menu
    set sideMenuName="Permission",
        sideMenuNumer=1,
        sideMenuOpen=1, //3 =1 open menu
        sideMenuIcon="fa-cog"  //4 icon 
        set sideMenu= $lb(sideMenuNumer, sideMenuName, sideMenuOpen, sideMenuIcon)
            set key="MenuMatrix"
            set opt(key,"Menu")=sideMenu
            set opt(key)=$$$aText("The matrix","") ;The name of the menu
            set opt(key,"id")="Matrix"
            set opt(key,"TabName")=$$$aText("The matrix","") ;the name of the tab
            set opt(key,"ClassName")=..%ClassName(1)
            set opt(key,"Role")="%All" ;To be able to edit access rights, the user must have the %All role
            set opt(key,"Namespace")="%SYS"
            set opt(key,"Method")="ShowTabSample"
            set opt(key,"Disable")=0 ;developed
            set opt(key,"TabMenu","Close")=1
            set opt(key,"Active")=1 ;active menu item
            set opt(key,"aw-icon")="fa-list-alt" ;fa-table" 
    ;top menu
    set topMenuName="Account",
        topMenuNumer=99
    set key="menu-top-account3"
        set opt(key,"MenuTop")=$lb(topMenuNumer,topMenuName) ; 99-account has nested items
        set opt(key)="Exit"
        set opt(key,"id")="AccountExit"
        set opt(key,"TabName")="Logoit" 
        set opt(key,"ClassName")=..%ClassName(1)
        set opt(key,"Method")="Logout"

    do ..CheckRoleMenu(.opt)
    quit $$$OK
}

모든 옵션은 다른 옵션과 구분하기 위해 접두사가 있습니다.serialize 함수에서 변수를 수집할 때 혼동되지 않습니다.이 접두사는 유일해야 하며 노드opt(key, "id") = 접두사에 정의되어야 합니다.
모든 옵션을 불러올 때 ShowTabSample 방법을 실행합니다. 두 개의 div가 있는form MainForm으로 템플릿을 표시합니다:prefix MainHeader와prefix MainContent.
prefixFirstHead 방법의 내용은prefixMainHeader 용기에 즉시 표시되고 그 중에서 결과를 출력하는prefixResult 방법을 형성합니다.
예: apptools.lte.라이선스
/// download form template search users and roles
ClassMethod MatrixFirstHead(Par = "") As %Status
{
    do ##class(apptools.core.Form).BlockUI(0)
    set key=Par("key")
    set divId=Par("divId")
    set %ui=1

    set onclick=$$$blockui("Load...")_
        $$$onclick(divId_"MainForm",divId_"MainContent",$namespace,..%ClassName(1),divId_"Result","&key="_key_"&divId="_divId_"&mode=*")
    &html<
        <table>
        <tr>
            <td>
            Login <br>#($$$appText(divId_"name","title='"_$$$aText("Names separated by a comma or by context","")_"'","ms"))#
            </td>
            <td>
            Roles <br>#($$$appText(divId_"roles","title='"_$$$aText("Roles separated by a comma or by context","")_"'","d"))#
            </td>
            <td> <br>
            #($$$appButton(divId_"appButtonResult1","onclick="""_$tr(onclick,"*",1)_"""",""_$$$aText("User roles","")))#
            </td>
        </tr>
        </table>
    >
    $$$SetHeightContent(divId,250)
    q $$$OK
}

/// Search result
ClassMethod MatrixResult(Par = "") As %Status
{
    set %ui=1
    do ##class(apptools.core.Form).BlockUI(0)
    set key=Par("key")
    set divId=Par("divId")
    set mode=Par("mode")
    //Geting elements from form and prepare array Par
    set name=##class(apptools.core.Action).GetElemForm(%request,.Par,divId_"name")  
    set roles=$g(Par("%request.Data",divId_"roles"))
    write ..ButtonAgain(divId,key)
    do ##class(apptools.Tabs.security).UiMatrixPermission(name,roles,divId,key,"apptools.Tabs.security","UiSavePermiss")
    quit $$$OK
}


이 방법들의 결과는 부록을 보십시오.

이 해결 방안의 주요 편리한 점은 역할과 사용자 목록의 출력이 고정된 열과 줄을 가진 표에 나타나는 데 있다.이를 통해 사용자에게 역할을 시각적으로 할당할 수 있습니다.
편의를 위해 필터에 사용자를 지정하고 쉼표로 구분할 수 있습니다.사용자를 지정하고 첫 번째 사용자의 역할에 따라 다른 사용자에게 역할을 할당할 수도 있습니다.

새 기능으로 패널 확장


프로그램의 인터페이스에 새 메뉴 항목을 추가하고 현재 계정의 상부 설정 파일과 접근 권한을 변경하는 측면 모듈에 추가합니다.
너는 여기서 예를 하나 열 수 있다. http://you-host:52773/apptoolsrest/a/permiss2

이 탭에서는 사용자와 해당 역할에 대한 검색과 모든 액세스 권한을 한 사용자에서 다른 사용자로 복사하는 기능을 제공합니다.관리 포털에서 1000명 이상의 사용자를 복제할 수 없기 때문에 복제를 실행해야 합니다.

이 패널을 계속해서 빠르게 확장하여 새로운 기능을 실현할 수 있습니다.예: http://you-host:52773/apptoolsrest/a/permiss3

데모 데스크 만들기


프레젠테이션을 만들고 예시로 검사합시다.먼저 링크를 엽니다.
https://learning.intersystems.com/course/view.php?name=Java%20Build

등록하고 "시작"단추를 누르면 IRIS 용기를 얻을 수 있습니다.

그런 다음 다음 다음 링크를 따르십시오.

그리고 메뉴에서 웹 터미널을 불러옵니다.

한 행에 응용 프로그램을 로드하려면 다음과 같이 하십시오.
set $namespace="%SYS", name="DefaultSSL" do:'##class(Security.SSLConfigs).Exists(name) ##class(Security.SSLConfigs).Create(name) set url="https://pm.community.intersystems.com/packages/zpm/latest/installer" Do ##class(%Net.URLParser).Parse(url,.comp) set ht = ##class(%Net.HttpRequest).%New(), ht.Server = comp("host"), ht.Port = 443, ht.Https=1, ht.SSLConfiguration=name, st=ht.Get(comp("path")) quit:'st $System.Status.GetErrorText(st) set xml=##class(%File).TempFilename("xml"), tFile = ##class(%Stream.FileBinary).%New(), tFile.Filename = xml do tFile.CopyFromAndSave(ht.HttpResponse.Data) do ht.%Close(), $system.OBJ.Load(xml,"ck") do ##class(%File).Delete(xml) zn "user" zpm "install apptools-util"


설치가 완료되면(몇 분 소요) 일시 중지 명령을 사용하여 세션을 닫습니다.

그런 다음 메뉴에서 관리 포털을 열고 "permiss"응용 프로그램 링크를 붙여넣습니다.
https://52773-1-860f32bd.labs.learning.intersystems.com/apptoolsrest/a/permiss
user:tech password:demo 자격 증명을 사용하여 응용 프로그램에 로그인

GitHub 에서 온전한 응용 프로그램 코드를 찾을 수 있습니다.

다음 단계


당신과 다른 관리자와 개발자들이 이 글이 매우 도움이 되는 것을 발견하기를 바랍니다.이제 JavaScript를 사용하여 역할 할당 도구를 만드는 방법을 알게 되었습니다.이 도구를 사용하여 IRIS 데이터 플랫폼의 관계를 빠르게 변경할 수 있습니다.
앞으로 모바일 애플리케이션에 사용할 수 있도록 패널이 Wi-Fi 보호 액세스 (WPA) 표준에 100% 부합되기를 희망합니다.데이터 조정의 수요를 충족시키기 위해 자신의 기능을 추가하거나 코드를 조정할 수 있습니다.
InterSystems IRIS 데이터 플랫폼에 대한 자세한 내용은 해당 웹 사이트와 start coding for free를 참조하십시오.

좋은 웹페이지 즐겨찾기