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); } }
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)); }
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)); } } }
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); }