Попытка получить текущего пользователя страницы SharePoint - PullRequest
0 голосов
/ 27 января 2020

Попытка получить пользователя страницы html, которая находится в библиотеке документов SP. Я попытался сделать что-то похожее на то, что есть в этом ТАКОМ сообщении, но получаю неопределенный ответ. Как я могу получить пользователя в настоящее время на странице? Спасибо.

Функция, в которой я пытаюсь получить текущего пользователя: $ 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

Ответы [ 2 ]

0 голосов
/ 29 января 2020

Да _spPageContextInfo.userDisplayName - это все, что вам нужно:

  • _spPageContextInfo.userDisplayName
  • _spPageContextInfo.userEmail
  • _spPageContextInfo. 100. _. isSiteAdmin
0 голосов
/ 29 января 2020

если мы говорим о SharePoint OnPrem, то вы всегда можете использовать объект _spPageContextInfo, который содержит много информации о текущем контексте. В этом объекте у вас также есть текущий идентификатор пользователя и логин в userId prop и userLoginName prop

...