需要查看当前用户是否与创建正在编辑的记录的用户相同
Need to to see if current user is the same user that created the record being edited
我在 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'));
}
}
我需要一种方法来获取此记录的“请求者名称”字段的登录名,或者需要另一种方法将当前用户与创建此记录的用户的用户进行比较。有什么建议吗?
如果我没理解错的话,Requestor_x0020_Name是用户字段。
jsom return oListItem.get_item('Requestor_x0020_Name')作为SP.FieldUserValue对象,可以通过oListItem.get_item('Requestor_x0020_Name').get_lookupId()
获取用户id或通过[=11获取用户名=].
对于这种情况,我想你可以比较一下用户id。
我在 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'));
}
}
我需要一种方法来获取此记录的“请求者名称”字段的登录名,或者需要另一种方法将当前用户与创建此记录的用户的用户进行比较。有什么建议吗?
如果我没理解错的话,Requestor_x0020_Name是用户字段。
jsom return oListItem.get_item('Requestor_x0020_Name')作为SP.FieldUserValue对象,可以通过oListItem.get_item('Requestor_x0020_Name').get_lookupId()
获取用户id或通过[=11获取用户名=].
对于这种情况,我想你可以比较一下用户id。