Security trong SharePoint Online bằng JSOM

Về vấn đề security trong SharePoint mà liên quan tới lập trình, bạn sẽ gặp 3 vấn đề sau:

  • CRUD Groups, Users
  • Quản lý groups được gán cho users
  • Kiểm tra permissions của users

Mình sẽ xét ví dụ về kiểm tra user có permission nào đó hay không. Nhìn chung, đoạn code cần tâp trung phân tích như sau:

function checkIfUserHasPermissions() { 
    context = new SP.ClientContext(); // Get client context
    web = context.get_web(); // Get web
    context.load(web, 'EffectiveBasePermissions'); // Get properties là EffectiveBasePermissions
    context.executeQueryAsync(onPermissionCheckSucceed, onFail);
}

function onPermissionCheckSucceed() { 
    var perms = SP.PermissionKind.editListItems || SP.PermissionKind.fullMask; // Kiểm tra user có permission là edit list item hoặc full controls
    if (web.get_effectiveBasePermissions().has(perms)){ 
        alert("has permissions"); 
    } 
    else { 
        alert("doesn't have permissions"); 
    }
}

Trong đó, SP.PermissionKind sẽ có các giá trị sau:

Security trong SharePoint Online bằng JSOM
Security trong SharePoint Online bằng JSOM

Ví dụ trên check user có permissions nào đó trong web. Nếu muốn check permissions của user trong list thì thay vì bạn load web thì thay bằng load list.

Lưu ý: Folder là securable object trong SharePoint nên bạn không thể check permissions của Folder một cách trực tiếp. Cách để check folder permissions là bạn get folder như 1 list item (tức sử dụng caml query hoặc get by ID)

Get Site Groups như thế nào?

Bạn xem đoạn code sau:

var context = new SP.ClientContext();
var web = context.get_web();
var siteGroups = web.get_siteGroups();
context.load(siteGroups);
context.executeQueryAsync(onGetGroupsSucceeded, BasicJSOM.Utilities.Fail);

function onGetGroupsSucceeded() {
        var msg = "";
        for (var i = 0; i < siteGroups.get_count() ; i++)
        {
            msg += + siteGroups.itemAt(i).get_title();
        }
        console.log(msg);
    }

Security trong SharePoint App

Trong app web, bạn dễ dàng thêm user permissions một cách trực tiếp, hoặc thêm group permissions mới. Tuy nhiên, bạn không thể tạo hoặc xóa group hoặc thêm user vào group đã có. Tóm lại trong app bạn được phép như sau:

  • Reading security và permissions
  • Add/delete user directly
  • Không được add/update/delete groups (bao gồm cả add users vào group)

Leave a Reply

Your email address will not be published. Required fields are marked *