Googleアカウントを使ったログイン・サインアップ

GoogleのAPIを使用してログインするログイン機能があります。この機能を利用することで簡単にa-blog cmsへログインすることができる様になります。またサインアップ機能(読者登録)も対応していますので、読者登録を実装されている場合は有効なカスタマイズになります。

Google API Consoleでの設定

Googleアカウントを使ったログインのための準備として、a-blog cms の管理ページ>コンフィグ>ログイン設定 にあるGoogleの「Client ID」と「Secret Key」の2つの情報が必要になります。この2つの情報は、GoogleのOAuth クライアント IDを作成することで入手できます。


Google API 「Client ID」「Secret Key」設定画面

Google API 「Client ID」「Secret Key」設定画面

この手順は2023年10月現在のものです。Google側の仕様変更がされる場合がありますのでご注意ください。

1.Google API Console( https://console.developers.google.com/ )から、申請を行う必要があります。この時点でログインしているアカウントに関連づけられます。はじめにヘッダーの「プロジェクトを選択してください」から「プロジェクトの作成...」から新しいプロジェクトを作成を行います。


プロジェクトの作成

プロジェクトの作成


2.認証情報から認証情報作成を行います。左のAPI Managerから「認証情報」を選択します。「認証情報を作成」から「OAuth クライアント ID」を選択します。

  • アプリケーションの種類: ウェブアプリケーション
  • 承認済みの JavaScript 生成元: Googleアカウントでログインを行うサイトURL(http://www.example.com)を入力
  • 承認済みのリダイレクト URI: 対象となるa-blog cmsのブログURL/callback/signin/google.html

作成すると、クライアントIDクライアントシークレット が表示されます。後で使うのでメモしておきましょう。また認証情報になりますので、外部にもれないように気をつけて下さい。


認証情報の作成

認証情報の作成


3.同意画面を設定します。認証情報 > OAuth同意画面から設定してください。サービス名は必須項目です。


OAuth同意画面の設定

OAuth同意画面の設定


a-blog cms 側の設定

Googleログインのためのa-blog cms側での設定は大きく3つあります。

1. 認証情報を登録

管理ページ > コンフィグ > ログイン設定 から設定できます。先ほどメモした「Client ID」 を Client IDに 「Client Secret」を Secret Keyに入力してください。


Google API 「Client ID」「Secret Key」設定画面

Google API 「Client ID」「Secret Key」設定画面

2. Googleログインのための設定

ブログ全体でのSNSログイン機能と対象についての設定は 管理ページ > コンフィグ > ログイン設定 から行います。

SNSログイン機能のチェックで該当ブログでの機能を有効化します。SNSログイン使用権限では、SNSログイン機能が使えるユーザー権限を設定します。


SNSログインの有効化

SNSログインの有効化

3. ユーザーごとの設定

「2. SNSログインのための設定」でブログでのSNSログイン機能を有効にすることで、該当ブログに所属する各ユーザーのプロフィール変更画面にSNSログインのための項目が表示されるようになります。

https://example.com/mypage/update-profile/

ログインした状態で認証(または認証解除)することで、ログイン情報とこのユーザーが関連づけされます。ログイン状態がユーザーに関連づけされますので、この設定は管理者が設定するのではなく、各ユーザーが個別に行うものとなります。


ユーザー管理でSNSと関連づけます

ユーザー管理でSNSと関連づけます


ログイン

ここまでの設定が行われていれば、ユーザーID、パスワードを入力しなくても、Googleのログインボタンからログインできるようになります。ログイン画面を表示すると、通常のユーザーID、パスワードの入力欄の下に、Googleのログインボタンが表示されます。


管理ログイン画面の場合

管理ログイン画面の場合


一般サインイン画面の場合

一般サインイン画面の場合

ロール機能について

a-blog cms では、ユーザーの権限を管理者、編集者、投稿者、読者の中から設定することができます。以下が各、ユーザーに与えられる権限です。



読者 投稿者 編集者 管理者
エントリーの投稿・編集 ×
自分のエントリー以外も管理 × ×
エントリーの削除 × ×
カテゴリーの作成 × ×
カテゴリーの編集・削除 × ×
その他管理操作 × × ×

さらにエンタープライズライセンスから使用可能なロール機能を使うことで、各ユーザーに応じて「投稿者」や「編集者」の設定にかかわらず、より細かい権限を適応可能になります。下がその設定項目となります。



エントリー権限 エントリーの投稿・編集、自分のエントリー以外も管理、エントリーの削除
カテゴリー権限 カテゴリーの作成、カテゴリーの編集・削除
フォーム権限 フォームデータの閲覧、フォーム設定の編集・削除
タグ権限 タグの編集・削除
メディア権限 メディアのアップロード、メディアの編集・削除
テンプレート書き出し権限 テンプレート書き出しの編集、テンプレート書き出しの実行
管理権限 モジュールの編集、ルールの編集、バックアップ(エクスポート)、バックアップ(インポート)、その他管理操作

ロール機能の利用方法

それでは実際にロール機能を使ってみましょう。ロール機能を使うには「ロールの作成」と「ユーザーグループ」の作成、2つの作業が必要となってきます。まずはロールの作成方法からご説明します。

ロールの作成

ロールは 管理ページ > ロール管理 より「ロールの作成」というボタンを押すことで作成できます。 すると下図のロール詳細ページに遷移します。



そこで付与したい権限に対してチェックを入れることで、そのロールに対して権限が有効になります。

ユーザーグループの作成

次にユーザーグループの作成です。ここでは先ほど設定した権限セットを選択した特定のユーザーにのみ適応することができます。 ユーザーグループは 管理ページ > ユーザーグループ管理 より「ユーザーグループの作成」というボタンを押すことで作成できます。 すると下図のロール詳細ページに遷移します。



そこで先ほど設定した「ロール」を適応したいユーザーにチェックを入れることで先ほどの権限が付与されます。

ロール機能使用時の権限の扱いについて

あるユーザーがユーザーグループに属している場合、本来の「編集者」「投稿者」などの権限が無効になり、そのユーザーグループに設定されたロールに応じて挙動が変わってくるので注意が必要です。 つまり、本来のユーザーの役割にかかわらず、ロールの設定に応じてそのユーザーを「編集者」や「投稿者」「管理者」とみなす仕様となっています。 下の表はロールの設定画面にて、ユーザーがある役割(投稿者など)と見なされるために最低限どの項目にチェックが付いていなければいけないかを表した表となります。 ○は必ずチェックが付いていないといけない項目、×は必ずチェックが外れていないといけない項目となります。



投稿者 編集者 管理者
エントリーの投稿・編集
自分のエントリー以外も管理 ×
エントリーの削除
カテゴリーの作成
カテゴリーの編集・削除
タグの編集・削除
その他管理操作 × ×

ロール機能使用時のタッチモジュールの振る舞いについて

Touch_SessionWithCompilationTouch_SessionWithContributorなどの権限に応じたタッチモジュールもユーザーがユーザーグループに追加されている場合はそのロールにしたがって中身のテンプレートが展開されたりされなかったりします。

例えば上の表のようにロールの設定にて、最低でも「エントリーの投稿・編集」「自分のエントリー以外も管理」「エントリーの削除」「カテゴリーの作成」「カテゴリーの編集・削除」「タグの編集・削除」の項目にチェックが入っていて、「その他管理操作」の項目のチェックが外れていれば、それは本来の「編集者」以上の権限を持つことになるのでTouch_SessionWithCompilationの中身のテンプレートが展開されます。

<!-- BEGIN_MODULE Touch_SessionWithCompilation -->
<!-- END_MODULE Touch_SessionWithCompilation -->

また、最低でもエントリーの投稿、編集機能にチェックが入っていて、「その他管理操作」の項目のチェックが外れていれば、それは「投稿者」以上の権限を持つことになるので、Touch_SessionWithContributorの中身のテンプレートが展開されることになります。

<!-- BEGIN_MODULE Touch_SessionWithContribution -->
<!-- END_MODULE Touch_SessionWithContribution -->