@@ -27,6 +27,14 @@ function handleParseHeaders(req, res, next) {
27
27
dotNetKey : req . get ( 'X-Parse-Windows-Key' ) ,
28
28
restAPIKey : req . get ( 'X-Parse-REST-API-Key' )
29
29
} ;
30
+
31
+ var basicAuth = httpAuth ( req ) ;
32
+
33
+ if ( basicAuth ) {
34
+ info . appId = basicAuth . appId
35
+ info . masterKey = basicAuth . masterKey || info . masterKey ;
36
+ info . javascriptKey = basicAuth . javascriptKey || info . javascriptKey ;
37
+ }
30
38
31
39
if ( req . body ) {
32
40
// Unity SDK sends a _noBody key which needs to be removed.
@@ -144,6 +152,45 @@ function handleParseHeaders(req, res, next) {
144
152
} ) ;
145
153
}
146
154
155
+ function httpAuth ( req ) {
156
+ if ( ! ( req . req || req ) . headers . authorization )
157
+ return ;
158
+
159
+ var header = ( req . req || req ) . headers . authorization ;
160
+ var appId , masterKey , javascriptKey ;
161
+
162
+ // parse header
163
+ var authPrefix = 'basic ' ;
164
+
165
+ var match = header . toLowerCase ( ) . indexOf ( authPrefix ) ;
166
+
167
+ if ( match == 0 ) {
168
+ var encodedAuth = header . substring ( authPrefix . length , header . length ) ;
169
+ var credentials = decodeBase64 ( encodedAuth ) . split ( ':' ) ;
170
+
171
+ if ( credentials . length == 2 ) {
172
+ appId = credentials [ 0 ] ;
173
+ var key = credentials [ 1 ] ;
174
+
175
+ var jsKeyPrefix = 'javascript-key=' ;
176
+
177
+ var matchKey = key . indexOf ( jsKeyPrefix )
178
+ if ( matchKey == 0 ) {
179
+ javascriptKey = key . substring ( jsKeyPrefix . length , key . length ) ;
180
+ }
181
+ else {
182
+ masterKey = key ;
183
+ }
184
+ }
185
+ }
186
+
187
+ return { appId : appId , masterKey : masterKey , javascriptKey : javascriptKey } ;
188
+ }
189
+
190
+ function decodeBase64 ( str ) {
191
+ return new Buffer ( str , 'base64' ) . toString ( )
192
+ }
193
+
147
194
var allowCrossDomain = function ( req , res , next ) {
148
195
res . header ( 'Access-Control-Allow-Origin' , '*' ) ;
149
196
res . header ( 'Access-Control-Allow-Methods' , 'GET,PUT,POST,DELETE,OPTIONS' ) ;
0 commit comments