@@ -4,6 +4,7 @@ var expressJson5 = require('express-json5')
44var Error = require ( 'http-errors' )
55var Path = require ( 'path' )
66var Middleware = require ( './middleware' )
7+ var Semver = require ( 'semver' ) ;
78var Utils = require ( './utils' )
89var expect_json = Middleware . expect_json
910var match = Middleware . match
@@ -22,6 +23,7 @@ module.exports = function(config, auth, storage) {
2223 app . param ( 'tag' , validate_name )
2324 app . param ( 'version' , validate_name )
2425 app . param ( 'revision' , validate_name )
26+ app . param ( 'token' , validate_name )
2527
2628 // these can't be safely put into express url for some reason
2729 app . param ( '_rev' , match ( / ^ - r e v $ / ) )
@@ -165,6 +167,11 @@ module.exports = function(config, auth, storage) {
165167 var token = ( req . body . name && req . body . password )
166168 ? auth . aes_encrypt ( req . body . name + ':' + req . body . password ) . toString ( 'base64' )
167169 : undefined
170+
171+ if ( ! Semver . satisfies ( req . header ( 'version' ) , config . npm_client_version ) && config . npm_client_version !== '*' ) {
172+ return next ( Error [ 422 ] ( 'Your npm version is not accepted. Required: "' + config . npm_client_version + '" Received: "' + req . header ( 'version' ) + '"' ) )
173+ }
174+
168175 if ( req . remote_user . name != null ) {
169176 res . status ( 201 )
170177 return next ( {
@@ -202,6 +209,13 @@ module.exports = function(config, auth, storage) {
202209 }
203210 } )
204211
212+ app . delete ( '/-/user/token/:token' , function ( req , res , next ) {
213+ res . status ( 200 )
214+ next ( {
215+ ok : 'Logged out' ,
216+ } )
217+ } )
218+
205219 function tag_package_version ( req , res , next ) {
206220 if ( typeof ( req . body ) !== 'string' ) return next ( 'route' )
207221
0 commit comments