@@ -6,6 +6,7 @@ const passportLocal = require('../passport/local');
66const passportAD = require ( '../passport/activeDirectory' ) ;
77const authStrategies = require ( '../passport' ) . authStrategies ;
88const db = require ( '../../db' ) ;
9+ const { toPublicUser } = require ( './publicApi' ) ;
910const { GIT_PROXY_UI_HOST : uiHost = 'http://localhost' , GIT_PROXY_UI_PORT : uiPort = 3000 } =
1011 process . env ;
1112
@@ -46,6 +47,25 @@ const getLoginStrategy = () => {
4647 return enabledAppropriateLoginStrategies [ 0 ] . type . toLowerCase ( ) ;
4748} ;
4849
50+ const loginSuccessHandler = ( ) => async ( req , res ) => {
51+ try {
52+ const currentUser = { ...req . user } ;
53+ delete currentUser . password ;
54+ console . log (
55+ `serivce.routes.auth.login: user logged in, username=${
56+ currentUser . username
57+ } profile=${ JSON . stringify ( currentUser ) } `,
58+ ) ;
59+ res . send ( {
60+ message : 'success' ,
61+ user : toPublicUser ( currentUser ) ,
62+ } ) ;
63+ } catch ( e ) {
64+ console . log ( `service.routes.auth.login: Error logging user in ${ JSON . stringify ( e ) } ` ) ;
65+ res . status ( 500 ) . send ( 'Failed to login' ) . end ( ) ;
66+ }
67+ } ;
68+
4969// TODO: provide separate auth endpoints for each auth strategy or chain compatibile auth strategies
5070// TODO: if providing separate auth methods, inform the frontend so it has relevant UI elements and appropriate client-side behavior
5171router . post (
@@ -59,25 +79,7 @@ router.post(
5979 console . log ( 'going to auth with' , authType ) ;
6080 return passport . authenticate ( authType ) ( req , res , next ) ;
6181 } ,
62- async ( req , res ) => {
63- try {
64- const currentUser = { ...req . user } ;
65- delete currentUser . password ;
66- console . log (
67- `serivce.routes.auth.login: user logged in, username=${
68- currentUser . username
69- } profile=${ JSON . stringify ( currentUser ) } `,
70- ) ;
71- res . send ( {
72- message : 'success' ,
73- user : currentUser ,
74- } ) ;
75- } catch ( e ) {
76- console . log ( `service.routes.auth.login: Error logging user in ${ JSON . stringify ( e ) } ` ) ;
77- res . status ( 500 ) . send ( 'Failed to login' ) . end ( ) ;
78- return ;
79- }
80- } ,
82+ loginSuccessHandler ( ) ,
8183) ;
8284
8385router . get ( '/oidc' , passport . authenticate ( authStrategies [ 'openidconnect' ] . type ) ) ;
@@ -114,8 +116,7 @@ router.post('/logout', (req, res, next) => {
114116router . get ( '/profile' , async ( req , res ) => {
115117 if ( req . user ) {
116118 const userVal = await db . findUser ( req . user . username ) ;
117- delete userVal . password ;
118- res . send ( userVal ) ;
119+ res . send ( toPublicUser ( userVal ) ) ;
119120 } else {
120121 res . status ( 401 ) . end ( ) ;
121122 }
@@ -160,14 +161,14 @@ router.post('/gitAccount', async (req, res) => {
160161
161162router . get ( '/me' , async ( req , res ) => {
162163 if ( req . user ) {
163- const user = JSON . parse ( JSON . stringify ( req . user ) ) ;
164- if ( user && user . password ) delete user . password ;
165- const login = user . username ;
166- const userVal = await db . findUser ( login ) ;
167- if ( userVal && userVal . password ) delete userVal . password ;
168- res . send ( userVal ) ;
164+ const userVal = await db . findUser ( req . user . username ) ;
165+ res . send ( toPublicUser ( userVal ) ) ;
169166 } else {
170167 res . status ( 401 ) . end ( ) ;
171168 }
172169} ) ;
173- module . exports = router ;
170+
171+ module . exports = {
172+ router,
173+ loginSuccessHandler
174+ } ;
0 commit comments