From 47e365a64be3478c821da64c9179ef8aa995153f Mon Sep 17 00:00:00 2001 From: Mitchell Date: Tue, 6 Nov 2018 21:05:55 -0600 Subject: [PATCH] load config from server instead of config file --- client/app/model/config.ts | 4 ++++ client/app/services/config.service.ts | 11 +++++++++++ client/app/util/oauth/oauth.ts | 15 ++++++--------- config/client.secret.json.template | 4 ---- lib/myapp_web/controllers/config_controller.ex | 15 +++++++++++++++ lib/myapp_web/router.ex | 2 ++ 6 files changed, 38 insertions(+), 13 deletions(-) create mode 100644 client/app/model/config.ts create mode 100644 client/app/services/config.service.ts delete mode 100644 config/client.secret.json.template create mode 100644 lib/myapp_web/controllers/config_controller.ex diff --git a/client/app/model/config.ts b/client/app/model/config.ts new file mode 100644 index 0000000..b84a82b --- /dev/null +++ b/client/app/model/config.ts @@ -0,0 +1,4 @@ +export interface IConfig { + client_id: string; + redirect_uri: string; +} diff --git a/client/app/services/config.service.ts b/client/app/services/config.service.ts new file mode 100644 index 0000000..8ea8c39 --- /dev/null +++ b/client/app/services/config.service.ts @@ -0,0 +1,11 @@ +import axios from '../axios/axios'; +import { IConfig } from '../model/config'; + +const getConfig = async (): Promise => { + const res = await axios.get('/api/config'); + return res.data.data; +}; + +export const ConfigService = { + getConfig, +}; diff --git a/client/app/util/oauth/oauth.ts b/client/app/util/oauth/oauth.ts index 870b323..e679738 100644 --- a/client/app/util/oauth/oauth.ts +++ b/client/app/util/oauth/oauth.ts @@ -1,14 +1,11 @@ -const config = require('../../../../config/client.secret.json'); +import { ConfigService } from '../../services/config.service'; -const { bnet_client_id, bnet_redirect_uri } = config; +const getUrl = (redirect_uri: string, client_id: string) => + `https://us.battle.net/oauth/authorize?redirect_uri=${redirect_uri}&scope=wow.profile&client_id=${client_id}&response_type=code`; -// TODO: support for eu etc. -const oauthUrl = - `https://us.battle.net/oauth/authorize?redirect_uri=` + - `${bnet_redirect_uri}&scope=wow.profile&client_id=${bnet_client_id}&response_type=code`; - -const openOuathWindow = () => { - window.open(oauthUrl, '_blank', 'resizeable=yes, height=900, width=1200'); +const openOuathWindow = async () => { + const config = await ConfigService.getConfig(); + window.open(getUrl(config.redirect_uri, config.client_id), '_blank', 'resizeable=yes, height=900, width=1200'); }; export const Oauth = { diff --git a/config/client.secret.json.template b/config/client.secret.json.template deleted file mode 100644 index 003c18c..0000000 --- a/config/client.secret.json.template +++ /dev/null @@ -1,4 +0,0 @@ -{ - "bnet_client_id": "", - "bnet_redirect_uri": "" -} diff --git a/lib/myapp_web/controllers/config_controller.ex b/lib/myapp_web/controllers/config_controller.ex new file mode 100644 index 0000000..0151a14 --- /dev/null +++ b/lib/myapp_web/controllers/config_controller.ex @@ -0,0 +1,15 @@ +defmodule MyAppWeb.ConfigController do + use MyAppWeb, :controller + alias MyAppWeb.Response + alias MyApp.Data + + def get_config(conn, _params) do + output = %{ + "client_id": Application.get_env(:myapp, :bnet_client_id), + "redirect_uri": Application.get_env(:myapp, :bnet_redirect_uri), + } + conn + |> put_status(200) + |> Response.json(output) + end +end diff --git a/lib/myapp_web/router.ex b/lib/myapp_web/router.ex index 715fd48..cd55578 100644 --- a/lib/myapp_web/router.ex +++ b/lib/myapp_web/router.ex @@ -22,6 +22,8 @@ defmodule MyAppWeb.Router do scope "/api", MyAppWeb do pipe_through [:api] + get "/config", ConfigController, :get_config + scope "/user" do post "/authorize", UserController, :authorize post "/login", UserController, :login