1
1
const passport = require ( "passport" ) ;
2
2
const users = require ( "../models/users" ) ;
3
+ const QrCodeAuthModel = require ( "../models/qrCodeAuth" ) ;
3
4
const authService = require ( "../services/authService" ) ;
5
+ const { SOMETHING_WENT_WRONG , DATA_ADDED_SUCCESSFULLY , BAD_REQUEST } = require ( "../constants/errorMessages" ) ;
4
6
5
7
/**
6
8
* Fetches the user info from GitHub and authenticates User
@@ -24,9 +26,6 @@ const githubAuth = (req, res, next) => {
24
26
userData = {
25
27
github_id : user . username ,
26
28
github_display_name : user . displayName ,
27
- tokens : {
28
- githubAccessToken : accessToken ,
29
- } ,
30
29
github_user_id : user . id ,
31
30
} ;
32
31
@@ -67,7 +66,81 @@ const signout = (req, res) => {
67
66
} ) ;
68
67
} ;
69
68
69
+ /**
70
+ * Stores user-device data inside the DB for mobile auth
71
+ *
72
+ * @param req {Object} - Express request object
73
+ * @param res {Object} - Express response object
74
+ */
75
+
76
+ const storeUserDeviceInfo = async ( req , res ) => {
77
+ try {
78
+ const userJson = {
79
+ user_id : req . body . user_id ,
80
+ device_info : req . body . device_info ,
81
+ device_id : req . body . device_id ,
82
+ authorization_status : "NOT_INIT" ,
83
+ } ;
84
+
85
+ const userInfo = await QrCodeAuthModel . storeUserDeviceInfo ( userJson ) ;
86
+
87
+ if ( ! userInfo ) {
88
+ return res . status ( 404 ) . json ( {
89
+ message : BAD_REQUEST ,
90
+ } ) ;
91
+ }
92
+
93
+ return res . status ( 201 ) . json ( {
94
+ ...userInfo ,
95
+ message : DATA_ADDED_SUCCESSFULLY ,
96
+ } ) ;
97
+ } catch ( err ) {
98
+ logger . error ( `Error while storing user device info : ${ err } ` ) ;
99
+ return res . boom . badImplementation ( SOMETHING_WENT_WRONG ) ;
100
+ }
101
+ } ;
102
+
103
+ const updateAuthStatus = async ( req , res ) => {
104
+ try {
105
+ const userId = req . userData . id ;
106
+ const authStatus = req . params . authorization_status ;
107
+ const result = await QrCodeAuthModel . updateStatus ( userId , authStatus ) ;
108
+
109
+ if ( ! result . userExists ) {
110
+ return res . boom . notFound ( "Document not found!" ) ;
111
+ }
112
+
113
+ return res . json ( {
114
+ message : `Authentication document for user ${ userId } updated successfully` ,
115
+ data : { ...result . data } ,
116
+ } ) ;
117
+ } catch ( error ) {
118
+ logger . error ( `Error while fetching user: ${ error } ` ) ;
119
+ return res . boom . badImplementation ( SOMETHING_WENT_WRONG ) ;
120
+ }
121
+ } ;
122
+
123
+ const fetchUserDeviceInfo = async ( req , res ) => {
124
+ try {
125
+ const deviceId = req . query . device_id ;
126
+ const userDeviceInfoData = await QrCodeAuthModel . retrieveUserDeviceInfo ( deviceId ) ;
127
+ if ( ! userDeviceInfoData . userExists ) {
128
+ return res . boom . notFound ( `User with id ${ deviceId } does not exist.` ) ;
129
+ }
130
+ return res . json ( {
131
+ message : "Authentication document retrieved successfully." ,
132
+ data : { ...userDeviceInfoData . data } ,
133
+ } ) ;
134
+ } catch ( error ) {
135
+ logger . error ( `Error while fetching user: ${ error } ` ) ;
136
+ return res . boom . badImplementation ( SOMETHING_WENT_WRONG ) ;
137
+ }
138
+ } ;
139
+
70
140
module . exports = {
71
141
githubAuth,
72
142
signout,
143
+ storeUserDeviceInfo,
144
+ updateAuthStatus,
145
+ fetchUserDeviceInfo,
73
146
} ;
0 commit comments