예제 #1
0
        public async Task <ResponseMessage <Organization> > GetOrganization(string userId, [FromRoute] string id)
        {
            ResponseMessage <Organization> response = new ResponseMessage <Organization>();

            //var oIds = await _permissionExpansionManager.GetOrganizationOfPermission(userId, "OrganizationRetrieve");
            //if (oIds == null || oIds.Count == 0 || !oIds.Contains(id))
            //{
            //    response.Code = ResponseCodeDefines.NotAllow;
            //    return response;
            //}
            response.Extension = await _organizationsManager.FindByIdAsync(id, HttpContext.RequestAborted);

            if (response.Extension == null)
            {
                response.Code = ResponseCodeDefines.NotFound;
                return(response);
            }
            return(response);
        }
        public async Task <IActionResult> Userinfo()
        {
            var user = await _extendUserManager.GetUserAsync(User);

            if (user == null)
            {
                return(BadRequest(new OpenIdConnectResponse
                {
                    Error = OpenIdConnectConstants.Errors.InvalidGrant,
                    ErrorDescription = "The user profile is no longer available."
                }));
            }

            var claims = new JObject();

            // Note: the "sub" claim is a mandatory claim and must be included in the JSON response.
            claims[OpenIdConnectConstants.Claims.Subject] = await _extendUserManager.GetUserIdAsync(user);

            claims[OpenIdConnectConstants.Claims.Name] = await _extendUserManager.GetUserNameAsync(user);

            claims[OpenIdConnectConstants.Claims.Picture]  = user.Avatar;
            claims[OpenIdConnectConstants.Claims.Nickname] = user.TrueName;
            claims["Organization"] = user.OrganizationId;
            claims["City"]         = _organizationsManager.FindByIdAsync(user.FilialeId, HttpContext.RequestAborted)?.Result?.City ?? "";

            if (User.HasClaim(OpenIdConnectConstants.Claims.Scope, OpenIdConnectConstants.Scopes.Email))
            {
                claims[OpenIdConnectConstants.Claims.Email] = await _extendUserManager.GetEmailAsync(user);

                claims[OpenIdConnectConstants.Claims.EmailVerified] = await _extendUserManager.IsEmailConfirmedAsync(user);
            }

            if (User.HasClaim(OpenIdConnectConstants.Claims.Scope, OpenIdConnectConstants.Scopes.Phone))
            {
                claims[OpenIdConnectConstants.Claims.PhoneNumber] = await _extendUserManager.GetPhoneNumberAsync(user);

                claims[OpenIdConnectConstants.Claims.PhoneNumberVerified] = await _extendUserManager.IsPhoneNumberConfirmedAsync(user);
            }

            if (User.HasClaim(OpenIdConnectConstants.Claims.Scope, OpenIddictConstants.Scopes.Roles))
            {
                claims[OpenIddictConstants.Claims.Roles] = JArray.FromObject(await _extendUserManager.GetRolesAsync(user));
            }

            // Note: the complete list of standard claims supported by the OpenID Connect specification
            // can be found here: http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims

            return(Json(claims));
        }