pooza / mulukhiya-toot-proxy

Fediインスタンスへの投稿に対して、ハッシュタグの追加等を行うプロキシ。通称「モロヘイヤ」。
MIT License
33 stars 1 forks source link

既存のトークンがすべて"壊れたトークン"となり、新規登録もできない #3772

Open karasugawasu opened 4 hours ago

karasugawasu commented 4 hours ago

既存のトークンがすべて”壊れたトークン”となり、新規で登録しようとしても次のエラーが発生します。

undefined method 'admin' for an instance of Mulukhiya::Mastodon::User

※WebUI上で表示

モロヘイヤ側のログ

10月 23 09:03:55 mstdn05sv mulukhiya-toot-proxy[628186]: {"method":"POST","url":"https://md.korako.me/oauth/token","status":200,"seconds":0.212}
10月 23 09:03:55 mstdn05sv mulukhiya-toot-proxy[628186]: {"request":{"method":"GET","path":"/mulukhiya/api/config","params":{"token":"*******************************************************************************"},"remote":"***.***.***.***"}}
10月 23 09:03:56 mstdn05sv mulukhiya-toot-proxy[628186]: {"sql":"SELECT accounts.id FROM oauth_access_tokens AS tokens INNER JOIN users ON tokens.resource_owner_id = users.id INNER JOIN accounts ON users.account_id = accounts.id WHERE (accounts.domain IS null) AND (accounts.silenced_at IS null) AND (accounts.suspended_at IS null) AND (users.disabled = false) AND (tokens.expires_in IS null) AND (tokens.revoked_at IS null) AND (tokens.token = '*****************************')","rows":1,"seconds":0.005}
10月 23 09:03:56 mstdn05sv mulukhiya-toot-proxy[628186]: {"error":{"message":"undefined method `admin' for an instance of Mulukhiya::Mastodon::User","file":"/home/karasugawa/mulukhiya-toot-proxy/app/lib/mulukhiya/model/mastodon/account.rb","line":82}}

環境

Mastodon 4.3.1 モロヘイヤ 4.33.2

pooza commented 2 hours ago

https://github.com/pooza/mulukhiya-toot-proxy/blob/673213c317bab7628035bb27e0a3cddb677b695e/app/lib/mulukhiya/model/mastodon/account.rb#L82

該当箇所。

      def admin?
        return true if user.admin
        return true if roles.any?(&:admin?)
        return false
      end

82行目とは return true if user.admin のことですが。 accountに対応するuserが見つからないケース?accountそのものが存在しないケース以外に考えられる?

pooza commented 2 hours ago

return true if user.admin はエラーの場合は無視して、 return true if roles.any?(&:admin?) こちらの判定だけ活かせば、管理人は検知できるのかも。

karasugawasu commented 50 minutes ago

あちらでもコメントしてましたが、 ウチの鯖にAdminがいませんでした。

image

return true if user.adminをコメントアウトすることでエラーなく動いているみたいです。

image