尝试获取SharePoint页面的当前用户

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

[试图获取位于SP文档库中的html页面的用户。我尝试做类似this SO帖子中的内容,但是变得不确定。如何获得当前在页面上的用户?谢谢。

我试图获取当前用户的函数是$ scope.updateTicket()

下面是所有JS代码。

var app = angular.module('myApp', []);
var reports = [];
var areports = [];
var breports = [];
app.controller('myController',
    function($scope, $http) {
        $http({
            method: 'GET',
            url: ".../_api/web/lists/GetByTitle('tickets')/items?$top=1000&$select=ID,comments,ticket_number,status,date",
            headers: {"Accept": "application/json;odata=verbose"}
        }).success(function (data, status, headers, config) {
            $scope.reports = data.d.results;

            $scope.openModal = function() {

                $getFormDigest = function() {
                    console.log("Inside getFormDigest...");
                    var formdigest;

                    jQuery.ajax({
                        url: "..._api/contextinfo",
                        type: "POST",
                        async: false,
                        headers: {
                            "accept": "application/json; odata=verbose",
                            type: "POST"
                        },
                        success: function(data)
                        {
                            formdigest = data.d.GetContextWebInformation.FormDigestValue
                        }
                    });
                    return formdigest;
                }

                $scope.updateFunc = function(itemID, new_comment) {
                    console.log('In update function...', itemID);
                    var formdigest = $scope.getFormDigest();

                    jQuery.ajax({
                        url: ".../_api/web/lists/GetByTitle('tickets')/items(" + itemID + ")",
                        type: "POST",
                        data: JSON.stringify({
                            '__metadata': { 'type': 'SP.Data.ticketsListItem' },
                        'comments': new_comment
                        }),
                        headers: {
                            "accept" : "application/json;odata=verbose",
                            "content-type": "application/json;odata=verbose",
                            "X-RequestDigest": formdigest,
                            "IF-MATCH": "*",
                            "X-HTTP-Method": "MERGE"
                        },
                        success: function(data)
                        {
                            console.log("comments updated successfully...");
                        },
                        error: function(data)
                        {
                            console.log($("#__REQUESTDIGEST").val());
                            console.log("Error message: " + JSON.stringify(dta.responseJSON.error));
                        }
                    });
                }

                $scope.updateTicket = function() {
                    jQuery.ajax({
                        url: ".../_api/web/currentuser?select=Title",
                        type: "GET",
                        success: function(data)
                        {
                            var title = data.d.Title;
                            console.log(title);
                        },
                        error: function(data) {
                            console.log("Error occurred trying to get user Title");
                        }
                    });

                    var submitter = document.getElementById("submitter");
                    var context = SP.ClientContext.get_current();
                    var web = context.get_web();
                    var user = context.get_web().get_currentUser();
                    context.load(user);
                    console.log("User: " + web.get_currentUser().$5_0.$H_0.Title);
                    //var submitter = web.get_currentUser().$5_0.$H_0.Title;
                    var now = new Date();
                    var timestamp = (now.getUTCMonth() + 1 + "/" + now.getUTCDate() + "/" + now.getFullYear() + " " + ("0" + now.getUTCHours()).slice(-2) + ":" ("0" + now.getUTCMinutes()).slice(-2));
                    var temp = document.getElementById('comments').innerHTML;
                    temp += '<br>' + timestamp + ' -- ' + submitter + '<br>' + document.getElementById('comment-field').value + '<br>';
                    document.getElementById('comments').innerHTML = '<br>' + temp + '<br>';

                    $scope.updateFunc(document.getElementById('id').innerHTML, temp);
                    document.getElementById('comment-field').value = '';
                    document.getElementById('myModal').style.display = 'none';
                    location.reload();
                };

                modal.display = "block";

            };

        }).error(function(data, status, headers, config) {
            console.log("an error occurred...");
        });

        var modal = document.getElementById('myModal');
        var span = document.getElementByClassName("close")[0];
        span.onclick = function() {
            modal.style.display = "none";
        }
        window.onclick = function(event) {
            if(event.target == modal) {
                modal.style.display = "none";
            }
        }

    });

在我的HTML文件的开头,我提取了以下SP库

init.js
MicrosoftAjax.js
sp.core.js
sp.runtime.js
sp.js
javascript sharepoint sharepoint-2013
2个回答
0
投票

如果我们正在谈论SharePoint OnPrem,那么您可以始终使用_spPageContextInfo对象,该对象具有许多有关当前上下文的信息。在此对象中,您还具有当前用户ID并登录到userId prop和userLoginName prop]


0
投票

是_spPageContextInfo.userDisplayName是您所需要的:

  • _ spPageContextInfo.userDisplayName
  • _ spPageContextInfo.userEmail
  • _ spPageContextInfo.userId
  • _ spPageContextInfo.isSiteAdmin
© www.soinside.com 2019 - 2024. All rights reserved.