예제 #1
0
        public async Task <IdentityDto> EnsureInGroupAsync(IRequest request, bool tryUseUserKeyAsGroupName = true)
        {
            request.OriginatorConnection = Context.ConnectionId;
            this.CollectClientIp(request);

            var enforceNotificationOfAllocatedGroup = false;

            if (tryUseUserKeyAsGroupName && OAuthHelper != null && !string.IsNullOrWhiteSpace(request.AccessToken))
            {
                var user = await OAuthHelper.GetUserAsync(request.AccessToken);

                if (user != null)
                {
                    enforceNotificationOfAllocatedGroup =
                        string.IsNullOrWhiteSpace(request.OriginatorGroup) ||
                        !request.OriginatorGroup.Equals(user.UserReference, StringComparison.OrdinalIgnoreCase);
                    request.OriginatorGroup = user.UserReference;
                    request.User            = user;
                }
            }

            request.OriginatorGroup =
                await JoinGroupAsync(request.OriginatorGroup, enforceNotificationOfAllocatedGroup);

            return(request.User);
        }
예제 #2
0
 protected virtual void Dispatch(IRequest request)
 {
     RequestDispatchingProxy.Dispatch(request);
 }