Social auth googleのMulti lingual対応

今日、Drupal関連の原稿の締切があって、昨日、任意レビューアーの方が原稿をチェックしてくださって、現行どおりにやっても、いくつかうまくいかない点が2点あった。問題解析をした結果、一つは、Group Moduleが運悪く6月30日にリビジョンアップして仕様変更があって管理画面が変わっていたことによるもので、もう一つはミスオペで同一URLで2つのEntityへのリンクが作成されてしまったのが原因だった。

Group Moduleは、Webformと共に、私がとても気に入っていて頼りにしているモジュールなのだが、まだ許容できるレベルとはいえ不具合は残っていて、リビジョンアップする時に微妙に動作が変わることがある。Group Moduleの今回のリビジョンアップの目玉は以下の変更だ。

Of special note

As part of this release, groups are fully revisionable through code and the UI. There is a route and access check for viewing the latest revision and there is also an overview where you can view and manage all revisions at once.

リビジョン対応ができたことで、同時にPublish/Unpublish状態を管理できるようになった。従来はアクセス権の設定は見られるか見られないかといったレベルだったのだが、公開状態(Published)のものを見られるようにするか、非公開のものも見られるようにするか、過去のリビジョンを巻き戻せるかといった設定が必要となる。管理機能が拡大すれば、粒度が細かくなり設定は難しくなる。

ちなみにリリースノートには、もう一点重要事項が書かれている。

However, Workflows support was out of scope for this sponsorship. So if you want to use the mini form for switching workflow state, then those still rely on global permissions. If you desperately need this to work on the group level, please reach out to Factorial at hello@factorial.io

Drupalで特に難しいのは、(言い換えれば優れているのは)権限設定だ。特に、コンテンツ作成・公開Workflowと多言語対応は頻繁に問題となる。リビジョン管理だけでも面倒なのにWorkflowsが入ると、Unpublishedのサブステータスが独自に定義できるようになるので、権限設定の役割分担が格段に難しくなる。多言語も難物で、コンテンツ(あるいはエンティティ)に対応する翻訳があるとは限らないし、翻訳を行う権限設定も翻訳の承認ワークフローも欲しくなる。Drupalは各Contribution Moduleの直行性(相互非依存性)を強く意識しつつ、同時に相互連携を意識しなければならないので、サブモジュールや別モジュールで複数のベースモジュールを連携させることになる。

Group Moduleは、別の軸でアクセス権限を制御するもので、Workflowsが時系列管理、国際化がパラレルワールド管理、Groupはユーザーとその属性を単純なツリー構造でなく管理するもう一つのアクセス管理軸となる。作者が計算量の検討結果も公開していて、よく考えないとパフォーマンスへの影響は時に破壊的になる。しかし、現実社会は複雑なのだ。

脱線したが、レビューとレビューの内容検証のため、執筆のために作ったサイトを米日二言語対応に設定したら、いきなりGoogle loginができなくなった。問題分析してみれば、URLに/ja/あるいは/en/が入るからcallbackが変わるのはあたりまえで、Google側の設定に2行加えればよいだけなので15分程度で解決したのだけれど、対応言語が増えるたびに対応するのは面倒だ。対応の選択肢は複数あり、それぞれに長短がある。

ふと、「教育は不便なるがよし」という言葉を思い出した。

タグ