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版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。


開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
Googleナレッジパネルの認証を受けるために申請してみた
Googleでエゴサーチしていると、ナレッジパネルなるものがあることに気づきまし …
-
-
RedmineにEasy Gantt プラグインをインストールしようとしたらRubyのバージョンが古いという事にひっかかったのでRubyもアップグレードした
RedmineにEasy Ganttプラグインをインストールしました。 標準のガ …
-
-
Google Apps ScriptでAdmin SDK Directory Serviceを使ってグループメンバー情報を出力する
GoogleAppsのGoogleGroupをメーリングリストとして使っている人 …
-
-
GoogleAppsScriptを使ってGmailの本文を解析してSpreadSheetにエクスポートする
GoogleAppsScriptを使ってGmailの本文を解析してSpreadS …
-
-
Backlogの実績工数をAmazon QuickSightでの可視化 – 仕組み編
Backlogの実績工数をAmazon QuickSightで可視化してわかった …
-
-
YoutubeチャンネルにカスタムURLを設定しました
YoutubeチャンネルのURLは初期状態では、https://www.yout …
-
-
trafficbot.liveからのスパムアクセス
ある日のGoogleAnalyticsで、5,000を超えるページビューがtra …
-
-
Googleカレンダーの予定をPHPからXMLで取得してWebページに表示する(現在廃止されたAPIなので使えません)
ご注意 ※下記の記事で使用していたAPIは2016年現在使用出来なくなっています …
-
-
CentOS 6.5にTeX Liveをインストールする
CentOS 6.5にTeX Liveをインストールする TeX Wikiを参考 …
-
-
Redmine 3.0.0で ガントチャートの幅を変更してトラッカーを非表示にする
Redmineのガントチャートで親子チケットなど階層が深くなると肝心のチケット題 …