@ -3,7 +3,7 @@ package de.srsoftware.umbrella.documents;
@@ -3,7 +3,7 @@ package de.srsoftware.umbrella.documents;
import static de.srsoftware.tools.MimeType.MIME_FORM_URL ;
import static de.srsoftware.umbrella.core.ConnectionProvider.connect ;
import static de.srsoftware.umbrella.core.Constants.SENDER ;
import static de.srsoftware.umbrella.core.Constants.* ;
import static de.srsoftware.umbrella.core.Paths.LIST ;
import static de.srsoftware.umbrella.core.Util.request ;
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.missingFieldException ;
@ -60,7 +60,13 @@ public class DocumentApi extends BaseHandler {
@@ -60,7 +60,13 @@ public class DocumentApi extends BaseHandler {
case COMPANIES - > getCompanies ( ex , user . get ( ) , token . orElse ( null ) ) ;
case CONTACTS - > getContacts ( ex , user . get ( ) , token . orElse ( null ) ) ;
case PATH_TYPES - > getDocTypes ( ex ) ;
case null , default - > super . doGet ( path , ex ) ;
case null - > super . doGet ( path , ex ) ;
default - > {
try {
yield getDocument ( ex , Long . parseLong ( head ) , user . get ( ) ) ;
} catch ( NumberFormatException ignored ) { }
yield super . doGet ( path , ex ) ;
}
} ;
} catch ( UmbrellaException e ) {
return send ( ex , e ) ;
@ -99,6 +105,21 @@ public class DocumentApi extends BaseHandler {
@@ -99,6 +105,21 @@ public class DocumentApi extends BaseHandler {
return sendContent ( ex , map ) ;
}
private boolean getDocument ( HttpExchange ex , long docId , UmbrellaUser user ) throws IOException , UmbrellaException {
var doc = db . loadDoc ( docId ) ;
var companyId = doc . companyId ( ) ;
var company = companies . get ( companyId ) ;
var members = companies . getMembers ( companyId ) ;
var isMember = false ;
for ( var member : members ) isMember | = user . equals ( member ) ;
if ( ! isMember ) return sendContent ( ex , HTTP_FORBIDDEN , "You are mot a member of company " + doc . companyId ( ) ) ;
var sep = company . decimalSeparator ( ) ;
if ( sep ! = null ) doc . setDecimalSeparator ( sep ) ;
doc . setCompanyName ( company . name ( ) ) ;
return sendContent ( ex , doc . renderToMap ( ) ) ;
}
private HashMap < Long , Map < String , Object > > getLegacyCompanies ( HttpExchange ex , UmbrellaUser umbrellaUser , Token token ) throws IOException , UmbrellaException {
var location = config . get ( "umbrella.modules.company.baseUrl" ) . map ( s - > s + "/json" ) . orElseThrow ( ( ) - > new UmbrellaException ( 500 , "umbrella.modules.company.baseUrl not configured!" ) ) ;
var resp = request ( location , token . asMap ( ) , MIME_FORM_URL , null ) ;
@ -139,9 +160,9 @@ public class DocumentApi extends BaseHandler {
@@ -139,9 +160,9 @@ public class DocumentApi extends BaseHandler {
var company = companies . get ( companyId . longValue ( ) ) ;
var members = companies . getMembers ( companyId . longValue ( ) ) ;
var match = false ;
for ( var member : members ) match | = user . equals ( member ) ;
if ( ! match ) return sendContent ( ex , HTTP_FORBIDDEN , "You are mot a member of company " + companyId ) ;
var isMember = false ;
for ( var member : members ) isMember | = user . equals ( member ) ;
if ( ! isMember ) return sendContent ( ex , HTTP_FORBIDDEN , "You are mot a member of company " + companyId ) ;
if ( ! json . has ( FIELD_CUSTOMER ) | | ! ( json . get ( FIELD_CUSTOMER ) instanceof JSONObject customerData ) ) throw missingFieldException ( FIELD_CUSTOMER ) ;
if ( ! json . has ( FIELD_TYPE ) | | ! ( json . get ( FIELD_TYPE ) instanceof Number docTypeId ) ) throw missingFieldException ( FIELD_TYPE ) ;