public function validateAuthCode($clientId, $redirectUri, $authCode)
    {
        $result = DB::table('oauth_sessions')
                    ->select('oauth_sessions.id as session_id', 'oauth_session_authcodes.id as authcode_id')
                    ->join('oauth_session_authcodes', 'oauth_sessions.id', '=', 'oauth_session_authcodes.session_id')
                    ->join('oauth_session_redirects', 'oauth_sessions.id', '=', 'oauth_session_redirects.session_id')
                    ->where('oauth_sessions.client_id', $clientId)
                    ->where('oauth_session_authcodes.auth_code', $authCode)
                    ->where('oauth_session_authcodes.auth_code_expires', '>=', time())
                    ->where('oauth_session_redirects.redirect_uri', $redirectUri)
                    ->first();

        return (is_null($result)) ? false : (array) $result;
    }