redmine_omniauth_googleプラグインをRedmine3.0.0で動くようにする
redmine_omniauth_googleプラグインをインストールしたところ、エラーが発生。
Redmine3.0.0には対応していないらしい。
なので、Rubyの経験はなかったのですが、基礎は調べて対応してみました。
おかしなところは指摘してもらえたら嬉しいです。
目次
修正後のプラグイン
元のプラグインをForkして修正しました。
https://github.com/yamamanx/redmine_omniauth_google
発生したエラー
app/controllers/redmine_oauth_controller.rb
[ruby]
user = User.find_or_initialize_by_mail(info[“email”])
[/ruby]
上記のコードが「undefined method」で怒られるので最初はfind_or_initialize(email)にしたら「Unknown column ‘users.email’ in ‘where clause’:」となった。
Redmine3.0.0の新機能
- 検索機能の改善 (高速化、未完了チケットのみ検索するオプション、添付ファイル名の検索)
- トラッカーごとのデフォルトステータスの指定
- ユーザーに複数のメールアドレスを登録
- 添付ファイルの説明欄の編集
- Rails 4.2 / Ruby 2.2 のサポート
主な機能は上記のとおりなので、「複数のメールアドレス登録」がひっかかってしまったのだろうと思いました。
コードの修正箇所
元のコード
app/controllers/redmine_oauth_controller.rb
[ruby]
user = User.find_or_initialize_by_mail(info[“email”])
if user.new_record?
# Self-registration off
redirect_to(home_url) && return unless Setting.self_registration?
# Create on the fly
user.firstname, user.lastname = info[“name”].split(‘ ‘) unless info[‘name’].nil?
user.firstname ||= info[:given_name]
user.lastname ||= info[:family_name]
user.mail = info[“email”]
user.login = parse_email(info[“email”])[:login]
user.login ||= [user.firstname, user.lastname]*”.”
user.random_password
user.register
[/ruby]
修正方法
すでにユーザーが登録済かどうかをチェックするのに、メールアドレスを使用しているのを変えなければならない。
ログインIDをキーにすればいいのですが、ログインIDはメールアドレスのアカウント部分か、それが取れなければユーザ名になっている。
かつ、ユーザ名はユーザ名を半角スペースで分割したものか、取れなければ姓、名で対応している。
これらをUserオブジェクト生成前に持ってくればいいのだろうと思いました。
修正後のコード
app/controllers/redmine_oauth_controller.rb
[ruby]
userFirstName,userLastName = info[“name”].split(‘ ‘) unless info[‘name’].nil?
userFirstName ||= info[:given_name]
userLastName ||= info[:family_name]
userLoginName = parse_email(info[“email”])[:login]
userLoginName ||= [userFirstName, userLastName]*”.”;
user = User.find_or_initialize_by(login: userLoginName)
if user.new_record?
# Self-registration off
redirect_to(home_url) && return unless Setting.self_registration?
# Create on the fly
user.firstname = userFirstName
user.lastname = userLastName
user.login = userLoginName
user.mail = info[“email”]
user.random_password
user.register
[/ruby]
もしかしたら「user.mail = info[“email”]」がひっかかるかと思ったのですが、これはカラムではなくてRedmineのユーザ登録画面のデフォルト値の設定だけのようなので、問題なかったです。
Redmine 認証設定値
- 認証が必要
- 自動ログイン : 1日
- メールでアカウントを有効化
- パスワードの最低文字数 : 8
- 追加メールアドレスの上限 : 5
- 有効期間の最大値 : 1日
- 無操作タイムアウト : 4時間
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
![](https://www.sbcr.jp/wp-content/uploads/2023/01/9784815617929-1-407x596.jpg)
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
![](https://www.sbcr.jp/wp-content/uploads/2024/01/9784815625382-3-420x596.jpg)
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
![](https://www.shuwasystem.co.jp//images/book/637791.jpg)
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
![](https://book.mynavi.jp/files/topics/135344_ext_06_0.jpg?v=1673514682)
「AWSではじめるLinux入門ガイド」という本を書きました。
![](https://www.yamamanx.com/wp-content/uploads/2023/12/81Rp5O9We6L._SY522_.jpg)
![@yamamanx](https://www.yamamanx.com/wp-content/plugins/lazy-load/images/1x1.trans.gif)
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
自転車でナビ+記録出来るアプリ+ホルダー+バッテリー試してみた
目的 記録を蓄積して振り返りやる気を継続する 飽きないように単調にならないように …
-
-
Pandocのテストとして User’s Guideを変換してみる
Pandoc User’s GuideをダウンロードしてHTMLに変 …
-
-
共有Googleカレンダーを自分のカレンダーに追加してiPhoneに同期する
配信ライブカレンダーという共有カレンダーを作りました。 このようなGoogleの …
-
-
Redmineの作業時間、予定工数をSQLで抽出
プラグインとかでやればいいのかもなのですが、可視化はダッシュボードツールとかBI …
-
-
Google関連のAPIを試すためのGoogleSiteを作ってみました
組み込み機能で出来る事は組み込み機能で と思いまして、Googleサイトを試験的 …
-
-
YoutubeチャンネルにカスタムURLを設定しました
YoutubeチャンネルのURLは初期状態では、https://www.yout …
-
-
Google One 100GBプランを購入しました
2021/6/1からGoogle Photos、Gmail、Google Dri …
-
-
個人のGoogleカレンダーの予定をPythonで取得する
Google Calendar Twilio ReminderのGoogleカレ …
-
-
Googleナレッジパネルの申請が承認されました
今年の4/13に「Googleナレッジパネルの認証を受けるために申請してみた」が …
-
-
「Cloud Vision Api & Tensorflow勉強会」に行ってきました
「Cloud Vision Api & Tensorflow勉強会」に行 …