} //injected by IOC public T Authorize <T>(DataModels.ITokenRequest Request, OAuth2.DataModels.Client Client = null) where T : DataModels.Token, new() { using (IDbConnection db = DBFactory.Open()) { T token = TokenModel.InsertToken <T>( TokenHelper.CreateAccessToken(), DataModels.TokenTypes.bearer, 3600, DateTime.UtcNow.GetTotalSeconds(), Client, Client.allowed_scope); int res = db.Execute( "INSERT INTO AccessToken (access_token, client_id, expires_in, scope) VALUES (@access_token, @client_id, @expires_in, @scope);", token ); if (token == null) { throw new OAuth2.DataModels.TokenRequestError() { error = DataModels.ErrorCodes.server_error, error_description = "Unable to store token", }; } return(token); } }
public T Exchange <T>(string RefreshToken, string ClientID) where T : DataModels.Token, new() { DataModels.Approval approval = ApprovalModel.GetApprovalByRefreshToken(ClientID, RefreshToken); if (RefreshToken != approval.refresh_token) { throw new DataModels.TokenRequestError(DataModels.ErrorCodes.access_denied, "Invalid refresh token"); } return(TokenModel.InsertToken <T>( Extension.TokenHelper.CreateAccessToken(), DataModels.TokenTypes.bearer, 3600, DateTime.Now.GetTotalSeconds(), ClientID, approval.scope, approval.resource_owner_id, approval.refresh_token)); }