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時間
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
CentOS 6.5にRedmineをインストールするためにrubyをインストールする
とりあえずgitは入っている前提で [bash] # cd /opt # git …
-
-
Redmine 3.0.0に CRMプラグインをインストールする
Redmine CRMプラグインのFreeのLightバージョンを使ってみる事に …
-
-
Redmine起動時にPassengerで「Could not spawn process for application」エラー
AWSで起動しているRedmineのEC2をt2.microからt2.small …
-
-
Backlogの課題チケット更新内容をMicrosoft Teamsに通知する(AWS Lambda Python)
BacklogにSlack連携が追加されました。 ですが、私の所属している会社で …
-
-
Amazon LinuxにRedmine をインストールする(手順整理版)
Amazon LinuxにRedmineをインストールしました手順を記載します。 …
-
-
AWSのAmazon LinuxにGitマスターサーバをインストールしてRedmineリポジトリブラウザで見る
Amazon LinuxにGitをインストールする Gitをインストールして自動 …
-
-
Redmine 3.0.0 にLocal Avatar プラグインをインストールしてユーザーがアバターを簡単に変更出来るようにする
Redmineのアバターは標準でGravater採用なのですが、エンドユーザーに …
-
-
動画間の広告を飛ばすのが面倒になったのでYoutube Premiumに加入しました
テレビのCMは全然見る方なんですが、Youtubeの動画の間の広告ってなんか流し …
-
-
「Cloud Vision Api & Tensorflow勉強会」に行ってきました
「Cloud Vision Api & Tensorflow勉強会」に行 …
-
-
Amzon Linux のApacheでRedmineとWordPressをバーチャルホストで共存する
EC2とRDSを節約しようと思いまして、Redmineを動かしてるとこに検証用W …