phoenix-powerPaaSからデータベースサーバーを使いOAuth認証ページを作成する方法

必要なもの

基本的には、以下のリポジトリを使います。

https://github.com/Gizra/elm-hedley

GitHub Pagesで認証ページを作成する

https://github.com/Gizra/hedley-server

DrupalのProfileを自動生成する

解説

Pantheon Drupal

具体的な手順は、Pantheonを使いDrupalを起動します。プロファイルの生成については、以下のコマンドを叩きます。

1
2
3
4
$ git clone https://github.com/Gizra/hedley-server
$ cd hedley-server
$ cp default.config.sh config.sh
$ ./install

ただし、installを実行する前にセキュリティ上の懸念があるため、Drupalは7.43を使います。

https://github.com/Gizra/hedley-server/blob/master/hedley/drupal-org-core.make#L4

1
2
- projects[drupal][version] = "7.41"
+ projects[drupal][version] = "7.43"

installを実行すると、www/profiles/@hedleyができます。これを削除して、実体のデータに置き換えます。

1
2
$ rm www/profiles/hedkey
$ cp -rf hedley www/profiles

次に、.gitignoreを編集し、コメントにします。

.gitignore
1
2
3
4
5
6
## Ignore configuration files that may contain sensitive information.
#sites/*/settings*.php
#
## Ignore paths that contain user-generated content.
#sites/*/files
#sites/*/private

次に、PantheonのGitサーバーにリポジトリをpushします。この際、新しいサイトを作成してその上にpushします。

1
2
$ ssh-key-gen -t rsa -f ~/.ssh/pantheon
$ cat ~/.ssh/pantheon.pub | pbcopy

SSH鍵は登録しおきます。

~/.ssh/config
1
2
3
4
Host *.drush.in
    KexAlgorithms diffie-hellman-group1-sha1
    IdentityFile ~/.ssh/pantheon
    Port 2222

リポジトリをcloneして、www/をgit化しpushします。

1
2
3
4
5
6
$ git clone ssh://codeserver.dev.foo.git gen_rep
$ cp -rf gen_rep/.git www/
$ cd www
$ git add .
$ git commit -m t
$ git push -u origin master

あとはサイトにアクセスし、Drupalの初期設定を行います。この際、hedleyを選択しましょう。

また、DB Nameなどは、PantheonのConnection Infoを見ましょう。

しかし、このままでは、以下のエラーが出ます。

1
The Drupal installer requires write permissions.

これは、Pantheon独特のもので、いかに記述があります。

https://pantheon.io/docs/filesystem-faq/

つまり、Git管理からSFTP管理にして、FTPサーバーにアクセス後に、chmod 644 settings.phpすればいいという話です。

1
2
3
$ sftp -o Port=2222 dev.foo
$ cd /code/site/default
$ chmod 644 settings.php

Elm

次にページ自体を作成します。

1
2
3
4
5
6
7
8
9
10
11
$ git clone https://github.com/Gizra/elm-hedley
$ cd elm-hedley
$ npm install -g elm@0.16.0
$ elm-package install -y
$ npm i && bower install
$ gulp build
$ cd serve
$ git checkout -b gh-pages
$ git add .
$ git commit -m f
$ git push -u origin gh-pages

ただし、バックエンドには先ほど作成したサーバーを指定します。

src/elm/Config.elm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
module Config where

import Config.Model as Config exposing (BackendConfig)
import Time exposing (Time)

localBackend : BackendConfig
localBackend =
  { backendUrl = "https://dev-hedley-elm.pantheonsite.io"
  , githubClientId = "e5661c832ed931ae176c"
  , name = "local"
  , hostname = "localhost"
  }

prodBackend : BackendConfig
prodBackend =
  { backendUrl = "https://live-hedley-elm.pantheonsite.io"
  , githubClientId = "4aef0ced83d72bd48d00"
  , name = "gh-pages"
  , hostname = "gizra.github.io"
  }

backends : List BackendConfig
backends =
  [ localBackend
  , prodBackend
  ]

cacheTtl : Time.Time
cacheTtl = (5 * Time.second)

Pantheonは通常、Dev -> Test -> Liveという手順を踏んで公開されます。それぞれにURLが存在し、リリースはlive-${foo}.pantheonsite.ioです。ただし、面倒くさい場合は、全部devでも良いと思います。

yoのジェネレーターもあります。こちらはdrupal(server), client(page)どちらも用意されていますね。

http://www.gizra.com/content/yo-hedley/