Пример #1
0
        public AccessToken GetAccessTokenByValue(string accessToken)
        {
            if (string.IsNullOrEmpty(accessToken))
            {
                throw new ArgumentNullException(nameof(accessToken));
            }

            if (accessToken == Globals.AuthHandlerToken)
            {
                return(new AccessToken
                {
                    ID = "0",
                    MemberID = "0",
                    AccessTokenValue = accessToken,
                    ValidFrom = DateTime.MinValue,
                    ValidTo = DateTime.MaxValue,
                    OrganizationID = 0
                });
            }

            var query = new GetAccessTokenByValue_Q
            {
                AccessToken = accessToken
            };

            var queryResult = _permQueryDispatcher.Dispatch <GetAccessTokenByValue_Q, GetAccessToken_QRM>(query);

            if (queryResult != null)
            {
                //Get Member for Token
                var memQuery = new GetMemberByID_Q
                {
                    MemberID = queryResult.MemberID
                };

                var memResult = _queryDispatcher.Dispatch <GetMemberByID_Q, Member>(Globals.AuthHandlerToken, memQuery);
                if (memResult == null)
                {
                    throw new Exception("Unable to retrive Member for AccessToken");
                }

                return(new AccessToken
                {
                    ID = queryResult.ID.ToString(),
                    MemberID = queryResult.MemberID.ToString(),
                    AccessTokenValue = queryResult.AccessToken,
                    ValidFrom = queryResult.ValidFrom,
                    ValidTo = queryResult.ValidTo,
                    OrganizationID = queryResult.OrganizationID,
                    UserType = memResult.UserType.ToString()
                });
            }
            else
            {
                return(null);
            }
        }
Пример #2
0
        public TResult Handle(string accessToken, TQuery query)
        {
            if (string.IsNullOrEmpty(accessToken))
            {
                throw new ArgumentNullException(nameof(accessToken));
            }

            if (query == null)
            {
                throw new ArgumentNullException(nameof(query));
            }

            //Bypass validation if GlobalToken
            if (accessToken.Equals(Globals.AuthHandlerToken))
            {
                return(_decoratedQH.Handle(accessToken, query));
            }

            //Retrieve Token
            var tokenQuery = new GetAccessTokenByValue_Q
            {
                AccessToken = accessToken
            };
            var accessTokenResult = _getAccessTokenByValue_QH.Handle(tokenQuery);

            if (accessTokenResult == null)
            {
                throw new UnauthorizedAccessException("Unable to retrive AccessToken");
            }

            //Is Token Expired?
            if (accessTokenResult.ValidTo <= DateTime.Now)
            {
                throw new UnauthorizedAccessException("AccessToken Expired");
            }

            return(_decoratedQH.Handle(accessToken, query));
        }
Пример #3
0
        public Result Handle(IUserContext userContext, TCommand command)
        {
            if (userContext == null)
            {
                throw new ArgumentNullException(nameof(UserContext));
            }

            if (string.IsNullOrEmpty(userContext.AccessToken))
            {
                throw new ArgumentNullException(nameof(userContext.AccessToken));
            }

            if (command == null)
            {
                throw new ArgumentNullException(nameof(command));
            }

            //Bypass validation if GlobalToken
            if (userContext.AccessToken.Equals(Globals.AuthHandlerToken))
            {
                return(_decoratedCH.Handle(userContext, command));
            }

            //Retrieve Token
            var tokenQuery = new GetAccessTokenByValue_Q
            {
                AccessToken = userContext.AccessToken
            };
            var accessTokenResult = _getAccessTokenByValue_QH.Handle(tokenQuery);

            if (accessTokenResult == null)
            {
                return new Result {
                           Status            = System.Net.HttpStatusCode.NotFound,
                           StatusDescription = "Could not find AccessToken"
                }
            }
            ;

            //Is Token Expired?
            if (accessTokenResult.ValidTo <= DateTime.Now)
            {
                return new Result {
                           Status            = System.Net.HttpStatusCode.Unauthorized,
                           StatusDescription = "AccessToken Expired"
                }
            }
            ;

            //Retrive Member for Token
            var person = _getMemberByToken_QH.Handle(new GetMemberByAccessToken_Q {
                AccessToken = accessTokenResult.AccessToken.ToString()
            });

            if (person == null)
            {
                return new Result {
                           Status            = System.Net.HttpStatusCode.NotFound,
                           StatusDescription = "Could not find person by AccessToken"
                }
            }
            ;

            userContext.MemberID       = person.ID;
            userContext.OrganizationID = person.OrganizationID;

            return(_decoratedCH.Handle(userContext, command));
        }
    }
}
Пример #4
0
        public AccessToken GenerateAccessToken(int memberID, int organizationID)
        {
            var cmd = new CreateAccessToken_C
            {
                MemberID          = memberID,
                OrganizationID    = organizationID,
                ValidFrom         = DateTime.UtcNow,
                ValidTo           = DateTime.UtcNow.AddHours(1),
                ParentAccessToken = string.Empty
            };

            AccessToken returnToken = null;
            var         cmdResult   = _commandDispatcher.Dispatch <CreateAccessToken_C>(new UserContext {
                MemberID    = 0,
                AccessToken = Globals.AuthHandlerToken
            }, cmd);

            if (cmdResult != null && cmdResult.ItemIDs != null && cmdResult.ItemIDs.Count > 0)
            {
                string newTokenID = cmdResult.ItemIDs.First();

                var newTokenQuery = new GetAccessTokenByValue_Q
                {
                    AccessToken = newTokenID
                };

                //Get Full Token After Creation
                var returnTokenQRM = _permQueryDispatcher.Dispatch <GetAccessTokenByValue_Q, GetAccessToken_QRM>(newTokenQuery);

                if (returnTokenQRM != null)
                {
                    //Get Member for Token
                    var memQuery = new GetMemberByID_Q
                    {
                        MemberID = returnTokenQRM.MemberID
                    };

                    var memResult = _queryDispatcher.Dispatch <GetMemberByID_Q, Member>(Globals.AuthHandlerToken, memQuery);
                    if (memResult == null)
                    {
                        throw new Exception("Unable to retrive Member after AccessToken Creation");
                    }

                    returnToken = new AccessToken
                    {
                        ID               = returnTokenQRM.ID.ToString(),
                        MemberID         = returnTokenQRM.MemberID.ToString(),
                        AccessTokenValue = returnTokenQRM.AccessToken,
                        ValidFrom        = returnTokenQRM.ValidFrom,
                        ValidTo          = returnTokenQRM.ValidTo,
                        OrganizationID   = returnTokenQRM.OrganizationID,
                        UserType         = memResult.UserType.ToString()
                    };
                }
                else
                {
                    throw new Exception("Unable to retrive AccessToken after Creation");
                }
            }
            else
            {
                throw new Exception("Error occurred in creating accessToken", new SystemException(cmdResult.StatusDescription));
            }

            return(returnToken);
        }