需要查看当前用户是否与创建正在编辑的记录的用户相同

问题描述 投票:0回答:1

我在SharePoint中有一个请求流程(自定义列表),需要实施一些业务规则。第一条规则是仅使当前用户能够与一些管理员一起编辑记录。使用OOB“ 创建和编辑访问权限”的问题是,当用户编辑不是他们的记录时,SharePoint不会在警告他们之前尝试警告他们。告诉用户该新闻为时已晚,因此我需要加强自己的安全性,以便不允许该用户进行编辑。

我获得当前用户的代码:

function SetCurrentUsernameToPeoplePicker()
{
  var ctx = new SP.ClientContext.get_current();
  this.website = ctx.get_web();
  this.currentUser = website.get_currentUser();
  ctx.load(currentUser);
  ctx.executeQueryAsync(Function.createDelegate(this, this.defaultUserSuccess), 
  Function.createDelegate(this, this. defaultUserFail));
}

function defaultUserSuccess (sender, args)
{
  var loginName = currentUser.get_loginName();
  console.log('login='+loginName );
}

我不知道如何从屏幕上的“请求者名称”人员选择器中获取用户,因此我尝试使用CAMEL查询来获取用户。我有对象,但无法获取loginName进行比较。我有以下代码:

 function retrieveListItems() {
    var clientContext = new SP.ClientContext.get_current();
    var oList = clientContext.get_web().get_lists().getByTitle('BSMRequests');
    var recordId = "14";
    var camlQuery = new SP.CamlQuery();
    camlQuery.set_viewXml('<View><Query><Where><Eq><FieldRef Name=\'ID\'/><Value Type=\'Text\'>'+ recordId +'</Value></Eq></Where></Query></View>'); 
    collListItem = oList.getItems(camlQuery);
    clientContext.load(collListItem);
    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded),
                                                           Function.createDelegate(this, this.onQueryFailed));
  }

  function onQuerySucceeded(sender, args) {
    var listItemEnumerator = collListItem.getEnumerator();
    while (listItemEnumerator.moveNext()) {
      var oListItem = listItemEnumerator.get_current();
    console.log('requestor='+oListItem.get_item('Requestor_x0020_Name'));
    }
  }

我需要一种方法来获取此记录的“请求者名称”字段的LoginName,或者另一种将当前用户与创建此记录的用户进行比较的方法。有什么建议吗?

javascript sharepoint-2013
1个回答
0
投票

如果我理解正确,Requestor_x0020_Name是一个用户字段。

jsom以SP.FieldUserValue对象的形式返回oListItem.get_item('Requestor_x0020_Name'),可以通过oListItem.get_item('Requestor_x0020_Name').get_lookupId()获得用户ID或通过oListItem.get_item('Requestor_x0020_Name').get_lookupValue()获得用户名。

对于这种情况,我认为您可以比较用户ID。

© www.soinside.com 2019 - 2024. All rights reserved.