private Task <IdentityApplicationUser> GetUserInfo() { var userId = SecurityExtensions.GetUserId(Identity); var userInfo = ApplicationUserManager.FindByIdAsync(userId); return(userInfo); }
/// <summary> /// Принимает подтверждение от внешнего провайдера о входе пользователя в систему. /// </summary> private Task <object> LinkExternalLoginCallback(IHttpRequest request) { return(ChallengeExternalProviderCallback(request, async loginInfo => { // Определение текущего пользователя var userId = SecurityExtensions.GetUserId(Identity); // Добавление имени входа пользователя var addLoginTask = await ApplicationUserManager.AddLoginAsync(userId, loginInfo.Login); return !addLoginTask.Succeeded ? string.Join(Environment.NewLine, addLoginTask.Errors) : null; })); }
/// <summary> /// Удаляет у текущего пользователя имя входа у внешнего провайдера. /// </summary> private async Task <object> UnlinkExternalLogin(IHttpRequest request) { if (!IsAuthenticated()) { return(CreateErrorResponse(Resources.RequestIsNotAuthenticated, 401)); } dynamic unlinkExternalLoginForm = request.Form; string provider = unlinkExternalLoginForm.Provider; string providerKey = unlinkExternalLoginForm.ProviderKey; if (string.IsNullOrWhiteSpace(provider)) { return(CreateErrorResponse(Resources.ExternalProviderCannotBeNullOrWhiteSpace, 400)); } if (string.IsNullOrWhiteSpace(providerKey)) { return(CreateErrorResponse(Resources.ExternalProviderKeyCannotBeNullOrWhiteSpace, 400)); } // Определение текущего пользователя var userId = SecurityExtensions.GetUserId(Identity); // Удаление имени входа пользователя var removeLoginTask = await ApplicationUserManager.RemoveLoginAsync(userId, new UserLoginInfo(provider, providerKey)); if (!removeLoginTask.Succeeded) { var errorMessage = !removeLoginTask.Succeeded ? string.Join(Environment.NewLine, removeLoginTask.Errors) : null; return(CreateErrorResponse(errorMessage, 400)); } return(CreateSuccesResponse <object>(null)); }