Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

traQのOAuthクライアントなしでも手元で動かせるようにしたい #379

Open
mazrean opened this issue Jul 18, 2022 · 6 comments
Assignees

Comments

@mazrean
Copy link
Member

mazrean commented Jul 18, 2022

現在、traQのOAuthクライアントがないと手元で動かせない
src/authに常に同じauthorization codeで通るようなモックを作ってしまうのが楽な気がする。

ただ、逆にOAuth周りの実装いじった時の手元での確認が複雑になりそうなので、やるべきかもうちょっと議論するべきな気もする。

@mazrean
Copy link
Member Author

mazrean commented Jul 18, 2022

少なくとも現状のOAuthクライアント作ってPostmanでガチャガチャログインした上でないとAPI叩けない状態はどうにかする必要がある。

@mazrean
Copy link
Member Author

mazrean commented Jul 18, 2022

認証なしでadminになるモード作る、あたりも案としてはありそう(むしろこっちの方が有力な気もする)。

@mazrean
Copy link
Member Author

mazrean commented Aug 12, 2022

整理すると、今の所思いついているのは

  • src/authに常に同じauthorization codeで通るようなモックを作る
    • 一度urlを踏む必要はあるので、若干の面倒臭さは残る
    • 一般的な方法なのか怪しい
  • 認証なしでadminになるモード作る
    • 正攻法な気がする
    • handlerでconfigから認証のon/offを読み込むことで実装できる
    • developmentモードとは別で設定項目を作るかは要検討

の2案。

いずれの方法でも本番環境でonになるとセキュリティ的に完全にアウトなので、

  • テストをちゃんと書く
  • デフォルトoffで明示的にonにする

はするべき。

@mazrean
Copy link
Member Author

mazrean commented Aug 12, 2022

認証なしでadminになるモード作る

の場合、

  1. configから認証をするかの設定を読み込む
    • src/configに環境変数とかの読み込みをする実装がある
    • そのほかの場所ではconfigのinterfaceをNew~のような関数の引数で受け取って読み込む
      • 参考:
        appStatus, err := appConf.Status()
        if err != nil {
        return nil, fmt.Errorf("failed to get app status: %w", err)
        }
        var logLevel logger.LogLevel
        switch appStatus {
        case config.AppStatusProduction:
        logLevel = logger.Silent
        case config.AppStatusDevelopment:
        logLevel = logger.Info
        default:
        return nil, errors.New("invalid app status")
        }
  2. 認証なしでadminになるモードがonの時、https://github.com/traPtitech/trap-collection-server/blob/9239bfcdc0cffd95d988f08401e53eb7f215c40c/src/handler/v1/middleware.go にある認証の処理を無条件で通す

のような流れになる。

@ikura-hamu
Copy link
Member

ikura-hamu commented Aug 24, 2022

認証部分もローカルで動作を確かめられるようにした方がいいと思ったので、新しくnoOAuthClientモード(名前は仮)を作る方向で進めようと思います。
新しくdockercomposeのyamlを作り、起動のときに今までdocker compose -f docker/dev/compose.yaml upを打ち込んでいたのをdocker compose -f docker/dev-no-oauth/compose.yaml upみたいな感じで打ち込むことになると思います。

@ikura-hamu
Copy link
Member

traPメンバーの取得などで、oauthを無効にしちゃうといろいろ問題が出てきたので、先延ばし

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants