ArcGIS API For Python 07- 訪問和管理用戶

用戶是Web GIS不可或缺的一部分。隨着你的用戶數量的增長,你可以看到自動化管理任務的價值(例如:設置許可、權限、創建和刪除用戶賬戶等)。gis模型提供UserUserManager這兩個類來處理用戶相關操作並幫助你完成最常見的任務。

關於你的賬戶

首先呢,先來看看登錄賬戶的一些信息,可以使用me來獲取當前登錄用戶的信息。

from arcgis.gis import GIS

gis = GIS(url="https://singlega.jiaoxn.local/arcgis", username="esricd", password="12345678", verify_cert=False)
gis.users.me

user對象的屬性

在Python中可以使用dir(<object>)查詢羣組實例的屬性,例如dir(gis.users.me)User實例的常用的屬性有:

  • access
  • created
  • lastLogin
  • description
  • email
  • firstName
  • lastName
  • fullName
  • level
  • mfaEnabled
  • provider
  • userType
  • storageQuota
  • storageUsage
  • groups

查詢用戶賬號

UserManager中的search()方法可幫助你查詢組織內的用戶。search()方法的中query參數的詳細信息可在ArcGIS REST API queries中查看。返回結果是一個User對象數組。

esri_public_accounts = gis.users.search(query="email = @esri.com")
curator_accounts = [acc for acc in esri_public_accounts if acc.username.startswith('Esri_Curator')]
curator_accounts

如果知道用戶名,還可以通過get()方法找到指定的用戶。

esri_hist_maps = ago_gis.users.get(username='Esri_Curator_Historical')
esri_hist_maps

創建新賬戶

Python API提供兩種創建新賬戶的方法:signup()create()signup()方法的使用是有侷限性的,因爲它只能向ArcGIS Enterprise創建內置賬戶,並且不能再ArcGIS Online上使用。與create()不同的是,它可以匿名訪問,不需要管理員權限。調用create()是需要管理員權限的。該方法在ArcGIS Enterprise中是非常強大的,因爲它允許你創建ArcGIS內置的憑證存儲或者ArcGIS Enterprise憑證存儲中創建賬戶,但對於ArcGIS Online中組織而言,只會使用內置憑證存儲。對於內置存儲創建的賬號,你在添加新用戶時需要設置密碼,登錄後,可任意修改密碼;對於從Enterprise憑證存儲創建的賬號,可不設置密碼,將會通過憑證存儲來登錄賬號。

除了可設置的類型以外呢,還可以根據成員的需要,配置不同級別的賬戶。這個級別決定了你的張華可訪問的權限。ArcGIS Enterprise提供了2種級別。級別1的賬戶,只能是查看內容,比如:Map、圖層、應用等。級別2的賬戶可用來查看、創建、更新內容,擁有羣組以及執行其他任務等。


demo_user1 = gis.users.create(username = 'demo_user1',
                              password = '0286eb9ac01f',
                              firstname = 'demo',
                              lastname = 'user',
                              email = '[email protected]',
                              description = 'Demonstrating how to create users using ArcGIS Python API',
                              role = 'org_user',
                              level = 2,
                              provider = 'arcgis')
demo_user1

用戶角色

ArcGIS提供了一個角色的安全概念,不同的角色在組織內的權限不同。默認情況下,組織的角色有3個:org_userorg_publisherorg_admin。簡單來講,用戶角色的賬戶是組織內的活躍賬戶,能夠創建內容項,加入羣組和分享內容;發佈角色的賬戶在用戶角色的權限的基礎上,還增加了創建託管內容和執行分析的權限;管理員角色的賬號擁有所有操作權限。

查看用戶角色,可方法屬性role

demo_user1.role

管理用戶角色

創建角色

調用RoleManagercreate()方法來實現創建角色,爲其分配權限。

privilege_list = ['portal:publisher:publishTiles',
                 'portal:user:createItem',
                 'portal:user:joinGroup']

tiles_pub_role = gis.users.roles.create(name = 'tiles_publisher',
                                       description = 'User that can publish tile layers',
                                       privileges = privilege_list)

tiles_pub_role
tiles_pub_role.privileges

創建自定義角色的用戶

調用UserManagercreate()方法來創建用戶,實現思路是:先是3中默認角色的一種來創建用戶,然後調用update_role()方法來更新爲自定義的角色。


tiles_pub_user = gis.users.create(username='tiles_publisher',
                                 password = 'b0cb0c9f63e',
                                 firstname = 'tiles',
                                 lastname = 'publisher',
                                 email = '[email protected]',
                                 description = 'custom role, can only publish tile layers',
                                 role = 'org_user') #org_user as thats the closest.

tiles_pub_user.update_role(role = tiles_pub_role)
tiles_pub_user.roleId

獲取組織內所有的自定義的角色

gis.users.roles.all(max_roles=50)

刪除用戶

通過調用具有管理員權限的賬戶的delete()方法,可以用來刪除賬戶。刪除賬戶會帶來一系列的問題,例如:其發佈的內容該怎麼處理?因此,ArcGIS規定,當用戶所擁有的內容項或者羣組沒有處理好之前,用戶不能被刪除。

獲取用戶內容

使用具有管理員權限的用戶登錄Python API,你可以在沒有密碼的情況下或者其他用戶沒有登錄的情況下,訪問其他用戶內容。

可使用User對象的folders屬性來獲取用戶擁有的文件夾,使用items()方法來獲取用戶擁有的內容項。

publisher1 = gis.users.get('publisher1')

publisher1_folder_list = publisher1.folders

publisher1_item_list_rootfolder = publisher1.items()

轉移用戶內容

作爲具有管理員權限的賬戶,可通過調用Item對象的reassign_to()方法來將內容從一個賬號轉移到另外一個賬號中。

transport_tiles_item.reassign_to(target_owner = 'publisher1', target_folder= 'f1_english')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章