Получение электронной почты пользователя, подключенного к службе приложений Azure с помощью Microsoft Identity.
Как мы можем получить электронную почту пользователя, подключенного к службе приложений Azure с помощью Microsoft Identity?
Наш интерфейс построен на основе React, а серверная часть построена на основе Node.js.
Спасибо, Кристоф
1 ответ
Наконец, достаточно было позвонить в
/.auth/me
Конечная точка REST для получения утверждений пользователей из данных ответа.
import axios from "axios";
const _ = require("lodash");
export function hasRoleReaders(userDetails) {
return hasRole(userDetails, "readers");
}
export function hasRoleWriters(userDetails) {
return hasRole(userDetails, "writers");
}
function hasRole(userDetails, expectation) {
const found = _.find(userDetails.roles, function (role) {
return role.val === expectation;
});
return found !== undefined;
}
export async function getUserDetails() {
return axios.get("/.auth/me")
.then(response => {
const datum = response.data[0];
const userId = datum.user_id;
const userClaims = datum.user_claims;
const name = _.find(userClaims, function (userClaim) {
return userClaim["typ"] === "name";
});
const roles = _.filter(userClaims, function (userClaim) {
return userClaim["typ"] === "roles";
});
return {
"userId": userId,
"name": name,
"userClaims": userClaims,
"roles": roles
};
})
.catch(reason => {
console.log(reason);
return {
"userId": "na",
"name": "na",
"userClaims": [],
"roles": []
};
});
}