1- const db = require ( '../db ' ) ;
1+ const appRepository = require ( '../repository/app ' ) ;
22
33purgeAppData = async function ( app ) {
44 //Eliminem totes les dades de les relacions existents
5- await new Promise ( ( resolve , reject ) => {
6- try {
7- db . query ( `DELETE FROM role_has_app WHERE app_docker_image = ?` , [ app . docker_image ] , ( error , results ) => {
8- if ( error ) {
9- console . error ( 'Error a l\'eliminar relacions existents:' , error ) ;
10- reject ( ) ;
11- }
12- resolve ( ) ;
13- } ) ;
14- }
15- catch ( err ) {
16- console . error ( 'Error a l\'eliminar relacions existents:' , err ) ;
17- }
18- } ) ;
5+ await appRepository . deleteAppRel ( app . docker_image ) ;
196
207 //Eliminem dades de l'app
21- await new Promise ( ( resolve , reject ) => {
22- try {
23- db . query ( `DELETE FROM app WHERE docker_image = ?` , [ app . docker_image ] , ( error , results ) => {
24- if ( error ) {
25- console . error ( 'Error a l\'eliminar dades existens de l\'app:' , error ) ;
26- reject ( ) ;
27- }
28- resolve ( ) ;
29- } ) ;
30-
31- }
32- catch ( err ) {
33- console . error ( 'Error a l\'eliminar relacions existents:' , err ) ;
34- }
35- } ) ;
8+ await appRepository . deleteApp ( app . docker_image ) ;
369}
3710
3811insertApp = async function ( app ) {
39- await new Promise ( ( resolve , reject ) => {
40- db . query ( `INSERT INTO app (docker_image, name, logo, availableUnauth, availableAnyAuth)
41- VALUES (?, ?, ?, ?, ?)` , [ app . docker_image , app . name , app . logo , app . availableUnauth , app . availableAnyAuth ] , ( error , results ) => {
42- if ( error ) {
43- console . error ( 'Error al insertar app la bdd:' , error ) ;
44- reject ( ) ;
45- }
46- resolve ( ) ;
47- } ) ;
48- } ) ;
12+ await appRepository . addApp ( app ) ;
4913}
5014
5115insertAppRoles = async function ( app ) {
5216 app . roles . map ( async x => {
53- await new Promise ( ( resolve , reject ) => {
54- db . query ( `INSERT INTO role_has_app (role_id, app_docker_image)
55- VALUES (?, ?)` , [ x , app . docker_image ] , ( error , results ) => {
56- if ( error ) {
57- console . error ( 'Error al insertar rols d\'app la bdd:' , error ) ;
58- reject ( ) ;
59- }
60- resolve ( ) ;
61- } ) ;
62- } ) ;
17+ await appRepository . addAppRole ( x , app . docker_image ) ;
6318 } ) ;
6419}
6520
@@ -78,29 +33,16 @@ module.exports = {
7833 } ) ; //Inicialment totes son noves
7934
8035 //Marquem i emplenem aquelles del cataleg que ja tenim registrades
81- await new Promise ( ( resolve , reject ) => {
82- db . query ( `SELECT docker_image, name, logo, availableUnauth, availableAnyAuth, GROUP_CONCAT(t1.role_id) roles FROM app t0
83- LEFT JOIN role_has_app t1 ON t0.docker_image = t1.app_docker_image
84- GROUP BY docker_image, name, logo, availableUnauth, availableAnyAuth`
85- , [ catalog . repositories ] , ( error , results ) => {
86- if ( error ) {
87- console . error ( 'Error al consultar la bdd:' , error ) ;
88- reject ( ) ;
89- }
90- else {
91- results . forEach ( app => {
92- if ( appsCataleg [ app . docker_image ] ) {
93- appsCataleg [ app . docker_image ] . pendingConfig = false ;
94- appsCataleg [ app . docker_image ] . name = app . name ;
95- appsCataleg [ app . docker_image ] . logo = app . logo ;
96- appsCataleg [ app . docker_image ] . availableUnauth = app . availableUnauth . toString ( ) === '1' ;
97- appsCataleg [ app . docker_image ] . availableAnyAuth = app . availableAnyAuth . toString ( ) === '1' ;
98- appsCataleg [ app . docker_image ] . roles = app . roles ? app . roles . split ( ',' ) . map ( x => parseInt ( x ) ) : [ ] ;
99- }
100- } )
101- }
102- resolve ( ) ;
103- } ) ;
36+ const results = await appRepository . getAppsWithRoles ( ) ;
37+ results . forEach ( app => {
38+ if ( appsCataleg [ app . docker_image ] ) {
39+ appsCataleg [ app . docker_image ] . pendingConfig = false ;
40+ appsCataleg [ app . docker_image ] . name = app . name ;
41+ appsCataleg [ app . docker_image ] . logo = app . logo ;
42+ appsCataleg [ app . docker_image ] . availableUnauth = app . availableUnauth . toString ( ) === '1' ;
43+ appsCataleg [ app . docker_image ] . availableAnyAuth = app . availableAnyAuth . toString ( ) === '1' ;
44+ appsCataleg [ app . docker_image ] . roles = app . roles ? app . roles . split ( ',' ) . map ( x => parseInt ( x ) ) : [ ] ;
45+ }
10446 } ) ;
10547
10648 //retornem les imatges
@@ -130,32 +72,16 @@ module.exports = {
13072 const filteredApps = [ ] ;
13173
13274 //Fetching de les apps a les que tenim accés
133- let query = 'SELECT DISTINCT docker_image, name, logo FROM app t0 ' ;
134- if ( ! filter . isAdmin )
135- query = query + `LEFT JOIN role_has_app t1 ON t0.docker_image = t1.app_docker_image
136- WHERE availableUnauth = 1
137- ${ filter . user ?'OR availableAnyAuth = 1' :'' }
138- ${ filter . role != null ?'OR t1.role_id = ?' :'' }
139- ` ;
140- await new Promise ( ( resolve , reject ) => {
141- db . query ( query , [ filter . role ] , ( error , results ) => {
142- if ( error ) {
143- console . error ( 'Error al consultar la bdd:' , error ) ;
144- reject ( ) ;
145- }
146- else {
147- results . forEach ( app => {
148- if ( appsCataleg [ app . docker_image ] ) {
149- filteredApps . push ( {
150- image : app . docker_image ,
151- name : app . name ,
152- ico : app . logo
153- } )
154- }
155- } )
156- }
157- resolve ( ) ;
158- } ) ;
75+
76+ const results = await appRepository . getAppsWithAccess ( filter . user , filter . role , filter . isAdmin ) ;
77+ results . forEach ( app => {
78+ if ( appsCataleg [ app . docker_image ] ) {
79+ filteredApps . push ( {
80+ image : app . docker_image ,
81+ name : app . name ,
82+ ico : app . logo
83+ } )
84+ }
15985 } ) ;
16086
16187 //retornem les imatges
@@ -167,22 +93,7 @@ module.exports = {
16793 //Si és admin té accés a tot
16894 if ( filter . isAdmin ) return true ;
16995
170- let canAccess = false ;
171-
17296 //Si no és admin comprovem que l'applicació estigui disponible
173- let query = `SELECT DISTINCT docker_image FROM app t0
174- LEFT JOIN role_has_app t1 ON t0.docker_image = t1.app_docker_image
175- WHERE docker_image = ? and (availableUnauth = 1
176- ${ filter . user ?'OR availableAnyAuth = 1' :'' }
177- ${ filter . role != null ?'OR t1.role_id = ?' :'' } )
178- ` ;
179- await new Promise ( ( resolve , reject ) => {
180- db . query ( query , [ filter . app , filter . role ] , ( error , results ) => {
181- canAccess = ! error && results . length > 0 ;
182- resolve ( ) ;
183- } ) ;
184- } ) ;
185-
186- return canAccess ;
97+ return await appRepository . checkUserAppAuthorization ( filter ) ;
18798 } ,
18899}
0 commit comments