一人もくもく会 α verでサービス開始しました。
請求書作成システム α verでサービス開始しました。

サイボウズLiveを作る-第1回-アイコン登録まで

概要

サイボウズLiveが終了するとのこと。

無料グループウェア「サイボウズLive」サービス終了のお知らせ | サイボウズ株式会社

丁度他のアプリケーション作成が一区切りついたところだったので、今度はサイボウズLiveのコピーを作ってみようと思う。 ざっと見てみたらそんなにページ数も多くなさそうな気もするし。

一通り作ってはみようと思うが特に代替、移行先として呼びこむつもりはない。 そんなアクセスが来たら止まるだろうし。

仕様

  • Elixir1.5
  • Phoenix1.3
  • Bootstrap Material Design

JavaScriptはAngularかVueを使おうかと思ったが、面倒だったことを思い出すと嫌になったのでやめた。 ソロだし付属のbrunchでES6を使ってjQueryで綺麗に書けば十分。

PhoenixでVueも簡単に使えるようなので置き換え中。

とりあえず作ったところ

認証

とりあえずTwitterでログインできるようにした。

GitHub - ueberauth/ueberauth_twitter: Twitter Strategy for Überauth

ユーザー作成やログイン部分は自分で勝手にやりたかったので、 ログインURLの発行とcallbackのパラメータ構築だけ任せ、 取得したパラメータであれこれやっている。

defmodule Cybozulive.AuthController do
  use Cybozulive.Web, :controller

  alias Cybozulive.UserRepo

  plug Ueberauth

  def request(conn, _params) do
    Ueberauth.Strategy.Helpers.callback_url(conn)
  end

  def callback(%{assigns: %{ueberauth_failure: _fails}} = conn, _params) do
    conn
    |> put_flash(:error, "Failed to authenticate.")
    |> redirect(to: "/")
  end

  def callback(%{assigns: %{ueberauth_auth: auth}} = conn, _params) do
    user = UserRepo.find_or_create!(auth)
    conn
    |> Cybozulive.Auth.set_user(user)
    |> redirect(to: "/")
  end
end

アイコンの登録

とりあえず掲示板とか作りたいところだが、

  • 掲示板作るにはグループが要る
  • グループ作るにはアイコンが要る

ということで面倒だがとりあえずアイコンを登録できる機能を作った。

phoenix.gen.htmlとarc_ectoでちゃちゃっと作れた。 そのままだと画像は公開されないので、

Elixir / Phoenix — Uploading images locally (With ARC)

にあるとおり、Plug.Staticの設定で公開できる。

  plug Plug.Static,
    at: "/uploads", from: Path.expand("./uploads"), gzip: false

f:id:dala:20171101231504p:plain

(公開側はBootstrap Material Designだが、管理画面は面倒だし本当は作りたくなかったのでPhoenixデフォルトのBootstrap)

全部これで登録はやってられないのでスクリプトで一括登録で作成予定。