Skip to content

Commit 7b16260

Browse files
committed
feat(jsbattle-webpage): add OAuth integration
1 parent 4256fac commit 7b16260

File tree

22 files changed

+423
-38
lines changed

22 files changed

+423
-38
lines changed

.gitignore

+3-1
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,6 @@ temp
8282
dist
8383

8484
#others
85-
.vscode
85+
.vscode
86+
87+
.jsbattle.config.json

packages/jsbattle-admin/features/step_definitions/navi_steps.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ BeforeAll(async function () {
4848
port: 8071,
4949
public: './dist',
5050
authorized: true,
51-
silent: true
51+
silent: true,
52+
rootUrl: '/admin'
5253
});
5354
}
5455
});

packages/jsbattle-mockserver/app/MockServer.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class MockServer {
2424
options = options || {};
2525
let port = options.port || 8080;
2626
let publicDir = options.public || './public';
27+
let rootUrl = options.rootUrl || '/';
2728
let serverDelay = options.serverDelay || 0;
2829
let silent = !!(options.silent);
2930

@@ -64,15 +65,15 @@ class MockServer {
6465
server.use('/', express.static(publicDir));
6566
server.use(bodyParser.urlencoded({ extended: true }))
6667
server.use(bodyParser.json())
67-
server.get('/auth/logout', function (req, res) {
68+
server.get('/auth/logout', (req, res) => {
6869
this._log("Logout");
6970
authorized = false;
70-
res.redirect('/admin')
71+
res.redirect(rootUrl)
7172
})
72-
server.get('/auth/:provider', function (req, res) {
73+
server.get('/auth/:provider', (req, res) => {
7374
this._log("Authorized");
7475
authorized = true;
75-
res.redirect('/admin')
76+
res.redirect(rootUrl)
7677
})
7778

7879
server.use((req, res, next) => {
@@ -119,8 +120,6 @@ class MockServer {
119120
"/api/profile": "/profile",
120121
"/api/:a/:b": "/:a,:b",
121122
"/api/*": "/$1"
122-
123-
124123
}))
125124
server.use(router)
126125

packages/jsbattle-mockserver/app/cli.js

+13-1
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,21 @@ const MockServer = require('./MockServer.js');
33

44
let server = new MockServer();
55

6+
7+
8+
console.log(process.argv);
9+
let port = 8080;
10+
for(let i=0; i < process.argv.length; i++) {
11+
if(process.argv[i] == '--port') {
12+
i++
13+
port = process.argv[i];
14+
}
15+
}
16+
617
server.start({
7-
port: 8080,
18+
port: port,
819
public: './dist',
920
authorized: false,
1021
serverDelay: 100,
22+
rootUrl: '/'
1123
});

packages/jsbattle-mockserver/app/db.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -185,9 +185,9 @@
185185
}
186186
],
187187
"authMethods": {
188-
"github": {"name": "GitHub", "url": "../auth/github"},
189-
"facebook": {"name": "Facebook", "url": "../auth/facebook"},
190-
"google": {"name": "Google", "url": "../auth/google"}
188+
"github": {"name": "GitHub", "url": "/auth/github"},
189+
"facebook": {"name": "Facebook", "url": "/auth/facebook"},
190+
"google": {"name": "Google", "url": "/auth/google"}
191191
},
192192
"profile": {
193193
"id": "8si8Su024sj2cZwo0",

packages/jsbattle-server/app/services/ApiGateway.service.js

+3
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ class ApiGatewayService extends Service {
100100

101101
if(broker.serviceConfig.auth.enabled == false) {
102102
this.logger.warn('Auth is disabled. Everyone can access admin panel. The configuration is not recommended for production purposes');
103+
this.app.get(`/auth/logout`, (req, res) => {
104+
res.redirect('/');
105+
});
103106
} else {
104107
configPassport(this.app, this.logger, broker);
105108
}

packages/jsbattle-server/app/services/apiGateway/configPassport.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ function configPassport(app, logger, broker) {
3939
`/auth/logout`,
4040
(req, res) => {
4141
res.cookie('JWT_TOKEN', '', { httpOnly: true, maxAge: 0 })
42-
res.redirect('/admin');
42+
res.redirect('/');
4343
}
4444
);
4545
app.get(`/auth/${provider.name}`, passport.authenticate(provider.name, { scope: 'email' }));
@@ -51,7 +51,7 @@ function configPassport(app, logger, broker) {
5151
let response = await broker.call('auth.authorize', { user });
5252
broker.emit("user.login", user.id);
5353
res.cookie('JWT_TOKEN', response.token, { httpOnly: true, maxAge: 24*60*60*1000 })
54-
res.redirect('/admin');
54+
res.redirect('/');
5555
}
5656
);
5757
logger.info(`Authorization strategy added: Log in at ${broker.serviceConfig.web.baseUrl}/auth/${provider.name}`);

packages/jsbattle-webpage/package-lock.json

+136-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/jsbattle-webpage/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
"test:smoke": "cucumber-js -t @smoke -f ./features/support/SimpleFormatter.js --retry 3 --fail-fast --world-parameters '{\"mockserver\": true}'",
2828
"analyse": "webpack --profile --json --config ./webpack.config.js > bundle_stats.json && webpack-bundle-analyzer bundle_stats.json",
2929
"watch": "npm-watch",
30-
"serve": "jsbattle-mock",
30+
"serve": "jsbattle-mock --port 8081",
3131
"start:dev": "webpack-dev-server --config ./webpack.config.js --mode=development"
3232
},
3333
"keywords": [],

packages/jsbattle-webpage/src/actions/actionTypes.js

+6
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,9 @@ export const STATS_SANDBOX_EDIT = 'STATS_SANDBOX_EDIT';
4040
export const STATS_CHALLENGE_LIST_OPEN = 'STATS_CHALLENGE_LIST_OPEN';
4141
export const STATS_CHALLENGE_COMPLETE = 'STATS_CHALLENGE_COMPLETE';
4242
export const STATS_CHALLENGE_OPEN = 'STATS_CHALLENGE_OPEN';
43+
export const AUTH_METHODS_REQUEST = 'AUTH_METHODS_REQUEST';
44+
export const AUTH_METHODS_SUCCESS = 'AUTH_METHODS_SUCCESS';
45+
export const AUTH_METHODS_FAILURE = 'AUTH_METHODS_FAILURE';
46+
export const USER_PROFILE_REQUEST = 'USER_PROFILE_REQUEST';
47+
export const USER_PROFILE_SUCCESS = 'USER_PROFILE_SUCCESS';
48+
export const USER_PROFILE_FAILURE = 'USER_PROFILE_FAILURE';

0 commit comments

Comments
 (0)