Javascript 需要查看当前用户是否与创建正在编辑的记录的用户相同
我在SharePoint中有一个请求流程(自定义列表),需要实现一些业务规则。第一条规则是只有当前用户才能与一些管理员一起编辑记录。使用OOB“创建和编辑访问权限””的问题在于,当用户编辑的记录不是他们的记录时,SharePoint不会向他们发出警告,直到他们尝试保存。现在告诉用户这个消息已经太迟了,所以我需要加强我自己的安全性,这样用户就不允许编辑 获取当前用户的我的代码:Javascript 需要查看当前用户是否与创建正在编辑的记录的用户相同,javascript,sharepoint-2013,Javascript,Sharepoint 2013,我在SharePoint中有一个请求流程(自定义列表),需要实现一些业务规则。第一条规则是只有当前用户才能与一些管理员一起编辑记录。使用OOB“创建和编辑访问权限””的问题在于,当用户编辑的记录不是他们的记录时,SharePoint不会向他们发出警告,直到他们尝试保存。现在告诉用户这个消息已经太迟了,所以我需要加强我自己的安全性,这样用户就不允许编辑 获取当前用户的我的代码: function SetCurrentUsernameToPeoplePicker() { var ctx = ne
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查询来获取它。我有对象,但无法比较登录名。我有以下代码:
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'));
}
}
函数retrieveListItems(){
var clientContext=new SP.clientContext.get_current();
var oList=clientContext.get_web().get_list().getByTitle('BSMRequests');
var recordId=“14”;
var camlQuery=new SP.camlQuery();
camlQuery.set_viewXml(“”+recordId+“”);
collListItem=oList.getItems(camlQuery);
加载(collListItem);
clientContext.executeQueryAsync(Function.createDelegate(this,this.onQuerySucceed),
Function.createDelegate(this,this.onQueryFailed));
}
函数onquerysucceed(发送方,参数){
var listItemEnumerator=collListItem.getEnumerator();
while(listItemEnumerator.moveNext()){
var oListItem=listItemEnumerator.get_current();
log('requestor='+oListItem.get_item('requestor_x0020_Name'));
}
}
我需要一种方法来获取此记录的Requestor Name字段的登录名,或者另一种方法来比较当前用户与创建此记录的用户的登录名。有什么建议吗?如果我理解正确,请求者名称是一个用户字段 jsom返回oListItem.get_item('requestorx0020_Name')作为SP.FieldUserValue对象,您可以通过
oListItem.get_item('requestorx0020_Name').get_lookupId()
或通过oListItem.get_item('requestorx0020_Name').get_lookupValue()
获取用户名
对于这种情况,我认为您可以比较用户id