4
4
5
5
import Gitlab from 'gitlab' ;
6
6
import { httperror } from 'http-errors' ;
7
- import type { Config , Logger , Callback } from '@verdaccio/types' ;
7
+ import type { PackageAccess , Config , Logger , Callback } from '@verdaccio/types' ;
8
8
9
- export default class GitLab {
10
- /**
11
- *
12
- * @param {* } config
13
- * @param {object } stuff config.yaml in object from
14
- */
15
-
16
- // flow types
9
+ export default class VerdaccioGitLab {
17
10
users : { } ;
18
11
stuff: { } ;
19
- config: Config ;
12
+ config: { } ;
20
13
logger: Logger ;
21
14
22
- // constructor
23
15
constructor (
24
16
config : {
25
17
url : string
@@ -33,84 +25,81 @@ export default class GitLab {
33
25
) {
34
26
this . users = { } ;
35
27
36
- // config for this module
37
28
this . config = config ;
38
29
this . stuff = stuff ;
39
30
40
- // verdaccio logger
41
31
this . logger = stuff . logger ;
42
32
43
33
}
44
34
45
- authenticate ( user : string , password : string , cb : Callback ) {
35
+ authenticate ( user : string , password : string , cb : Callback ) {
46
36
47
- var GitlabAPI = new Gitlab ( {
48
- url : this . config . url ,
49
- token : password
50
- } ) ;
37
+ var GitlabAPI = new Gitlab ( {
38
+ url : this . config . url ,
39
+ token : password
40
+ } ) ;
51
41
52
- GitlabAPI . Users . current ( ) . then ( ( response ) => {
53
- if ( user !== response . username ) return cb ( httperror [ 403 ] ( 'wrong gitlab username' ) ) ;
54
- var ownedGroups = [ user ] ;
55
- GitlabAPI . Groups . all ( { 'owned' : 'true' } ) . then ( ( groups ) => {
56
- groups . forEach ( function ( item ) {
57
- if ( item . path === item . full_path ) {
58
- ownedGroups . push ( item . path ) ;
59
- }
42
+ GitlabAPI . Users . current ( ) . then ( ( response ) => {
43
+ if ( user !== response . username ) return cb ( httperror [ 403 ] ( 'wrong gitlab username' ) ) ;
44
+ var ownedGroups = [ user ] ;
45
+ GitlabAPI . Groups . all ( { 'owned' : 'true' } ) . then ( ( groups ) => {
46
+ groups . forEach ( function ( item ) {
47
+ if ( item . path === item . full_path ) {
48
+ ownedGroups . push ( item . path ) ;
49
+ }
50
+ } ) ;
51
+ cb ( null , ownedGroups ) ;
60
52
} ) ;
61
- cb ( null , ownedGroups ) ;
53
+ } ) .
54
+ catch ( error => {
55
+ if ( error ) return cb ( 'Personal access token invalid' ) ;
62
56
} ) ;
63
- } ) .
64
- catch ( error => {
65
- if ( error ) return cb ( 'Personal access token invalid' ) ;
66
- } ) ;
67
- }
57
+ }
68
58
69
- adduser ( user : string , password : string , cb : Callback ) {
70
- cb ( null , false ) ;
71
- }
59
+ adduser ( user : string , password : string , cb : Callback ) {
60
+ cb ( null , false ) ;
61
+ }
72
62
73
- allow_access ( user : string , _package : string , cb : Callback ) {
74
- if ( ! _package . gitlab ) return cb ( ) ;
75
- if ( _package . access . includes ( '$authenticated' ) && user . name !== undefined ) {
76
- return cb ( null , true ) ;
77
- } else {
78
- return cb ( null , false ) ;
63
+ allow_access ( user , _package : PackageAccess , cb : Callback ) {
64
+ if ( ! _package . gitlab ) return cb ( ) ;
65
+ if ( _package . access . includes ( '$authenticated' ) && user . name !== undefined ) {
66
+ return cb ( null , true ) ;
67
+ } else {
68
+ return cb ( null , false ) ;
69
+ }
79
70
}
80
- }
81
71
82
- allow_publish ( user : string , _package : string , cb : Callback ) { // jscs:ignore requireCamelCaseOrUpperCaseIdentifiers
83
- if ( ! _package . gitlab ) return cb ( ) ;
84
- var packageScopeOwner = false ;
85
- var packageOwner = false ;
72
+ allow_publish ( user , _package : PackageAccess , cb : Callback ) { // jscs:ignore requireCamelCaseOrUpperCaseIdentifiers
73
+ if ( ! _package . gitlab ) return cb ( ) ;
74
+ var packageScopeOwner = false ;
75
+ var packageOwner = false ;
86
76
87
- user . real_groups . forEach ( function ( item ) { // jscs:ignore requireCamelCaseOrUpperCaseIdentifiers
88
- if ( item === _package . name ) {
89
- packageOwner = true ;
90
- return false ;
91
- } else {
92
- if ( _package . name . indexOf ( '@' ) === 0 ) {
93
- if ( item === _package . name . slice ( 1 , _package . name . lastIndexOf ( '/' ) ) ) {
94
- packageScopeOwner = true ;
95
- return false ;
77
+ user . real_groups . forEach ( function ( item ) { // jscs:ignore requireCamelCaseOrUpperCaseIdentifiers
78
+ if ( item === _package . name ) {
79
+ packageOwner = true ;
80
+ return false ;
81
+ } else {
82
+ if ( _package . name . indexOf ( '@' ) === 0 ) {
83
+ if ( item === _package . name . slice ( 1 , _package . name . lastIndexOf ( '/' ) ) ) {
84
+ packageScopeOwner = true ;
85
+ return false ;
86
+ }
96
87
}
97
88
}
98
- }
99
- } ) ;
89
+ } ) ;
100
90
101
- if ( packageOwner === true ) {
102
- return cb ( null , false ) ;
103
- } else {
104
- if ( packageScopeOwner === true ) {
91
+ if ( packageOwner === true ) {
105
92
return cb ( null , false ) ;
106
93
} else {
107
- if ( _package . name . indexOf ( '@' ) === 0 ) {
108
- return cb ( httperror [ 403 ] ( 'must be owner of package-scope' ) ) ;
94
+ if ( packageScopeOwner === true ) {
95
+ return cb ( null , false ) ;
109
96
} else {
110
- return cb ( httperror [ 403 ] ( 'must be owner of package-name' ) ) ;
97
+ if ( _package . name . indexOf ( '@' ) === 0 ) {
98
+ return cb ( httperror [ 403 ] ( 'must be owner of package-scope' ) ) ;
99
+ } else {
100
+ return cb ( httperror [ 403 ] ( 'must be owner of package-name' ) ) ;
101
+ }
111
102
}
112
103
}
113
104
}
114
105
}
115
-
116
- }
0 commit comments