Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
trismegisto-services
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Mauro Paolo Josue Zuñiga Mallqui
trismegisto-services
Commits
bcc3c3a5
Commit
bcc3c3a5
authored
Apr 10, 2024
by
Mauro Paolo Josue Zuñiga Mallqui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[ADD] AVANCE DE GMAIL Y DRIVE
parent
4020f7a1
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
687 additions
and
371 deletions
+687
-371
pom.xml
pom.xml
+21
-10
AppApplication.java
...ava/web/multitask/trismegistoservices/AppApplication.java
+2
-0
DriveApi.java
.../java/web/multitask/trismegistoservices/api/DriveApi.java
+11
-7
EmailApi.java
.../java/web/multitask/trismegistoservices/api/EmailApi.java
+62
-78
JWTokenApi.java
...ava/web/multitask/trismegistoservices/api/JWTokenApi.java
+26
-3
RoutineApi.java
...ava/web/multitask/trismegistoservices/api/RoutineApi.java
+11
-7
DotEnvConfig.java
...eb/multitask/trismegistoservices/config/DotEnvConfig.java
+13
-13
EmailConfig.java
...web/multitask/trismegistoservices/config/EmailConfig.java
+19
-20
GoogleConfig.java
...eb/multitask/trismegistoservices/config/GoogleConfig.java
+104
-21
MVCConfig.java
...a/web/multitask/trismegistoservices/config/MVCConfig.java
+3
-2
SecurityConfig.java
.../multitask/trismegistoservices/config/SecurityConfig.java
+16
-16
JWTokenFilter.java
...b/multitask/trismegistoservices/filter/JWTokenFilter.java
+42
-3
IDriveService.java
...ltitask/trismegistoservices/interfaces/IDriveService.java
+1
-1
DriveRequest.java
...web/multitask/trismegistoservices/model/DriveRequest.java
+2
-3
GmailRequest.java
...web/multitask/trismegistoservices/model/GmailRequest.java
+3
-1
RoutineSql.java
...a/web/multitask/trismegistoservices/mysql/RoutineSql.java
+65
-9
EmailService.java
.../multitask/trismegistoservices/services/EmailService.java
+0
-156
DriveService.java
...ask/trismegistoservices/services/google/DriveService.java
+17
-2
GmailService.java
...ask/trismegistoservices/services/google/GmailService.java
+127
-0
ThreadLocalSingleton.java
...k/trismegistoservices/singleton/ThreadLocalSingleton.java
+23
-0
TokenSingleton.java
...ltitask/trismegistoservices/singleton/TokenSingleton.java
+47
-0
CommonUtils.java
.../web/multitask/trismegistoservices/utils/CommonUtils.java
+25
-0
JWTokenUtil.java
.../web/multitask/trismegistoservices/utils/JWTokenUtil.java
+14
-1
application.properties
src/main/resources/application.properties
+3
-5
oAuth2.json
src/main/resources/tokens/oAuth2.json
+16
-0
serviceAccount.json
src/main/resources/tokens/serviceAccount.json
+14
-0
trimegistro-mongo-3e687dba9acb.json
...main/resources/tokens/trimegistro-mongo-3e687dba9acb.json
+0
-13
No files found.
pom.xml
View file @
bcc3c3a5
...
...
@@ -68,6 +68,11 @@
<version>
8.2.0
</version>
</dependency>
<dependency>
<groupId>
org.postgresql
</groupId>
<artifactId>
postgresql
</artifactId>
<version>
42.7.3
</version>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-tomcat
</artifactId>
<scope>
provided
</scope>
...
...
@@ -168,7 +173,7 @@
<dependency>
<groupId>
com.google.api-client
</groupId>
<artifactId>
google-api-client
</artifactId>
<version>
2.0.0
</version>
<version>
1.35.2
</version>
</dependency>
<dependency>
<groupId>
com.google.oauth-client
</groupId>
...
...
@@ -178,7 +183,13 @@
<dependency>
<groupId>
com.google.apis
</groupId>
<artifactId>
google-api-services-drive
</artifactId>
<version>
v3-rev20220815-2.0.0
</version>
<version>
v3-rev197-1.25.0
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.apis/google-api-services-gmail -->
<dependency>
<groupId>
com.google.apis
</groupId>
<artifactId>
google-api-services-gmail
</artifactId>
<version>
v1-rev110-1.25.0
</version>
</dependency>
<dependency>
<groupId>
com.google.auth
</groupId>
...
...
@@ -186,15 +197,15 @@
<version>
1.3.0
</version>
</dependency>
<dependency>
<groupId>
org.apache.logging.log4j
</groupId>
<artifactId>
log4j-to-slf4j
</artifactId>
<version>
2.20.0
</version>
<groupId>
com.google.api-client
</groupId>
<artifactId>
google-api-client-gson
</artifactId>
<version>
1.21.0
</version>
</dependency>
<dependency>
<groupId>
com.google.gdata
</groupId>
<artifactId>
core
</artifactId>
<version>
1.47.1
</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.kafka</groupId>-->
<!-- <artifactId>spring-kafka</artifactId>-->
<!-- <version>2.9.0</version>-->
<!-- </dependency>-->
</dependencies>
<build>
<finalName>
trismegisto-services
</finalName>
...
...
src/main/java/web/multitask/trismegistoservices/AppApplication.java
View file @
bcc3c3a5
...
...
@@ -3,9 +3,11 @@ package web.multitask.trismegistoservices;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.scheduling.annotation.EnableAsync
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
@SpringBootApplication
@EnableAsync
@EnableScheduling
public
class
AppApplication
{
public
static
void
main
(
String
[]
args
)
{
...
...
src/main/java/web/multitask/trismegistoservices/api/DriveApi.java
View file @
bcc3c3a5
...
...
@@ -8,7 +8,7 @@ import org.springframework.http.ResponseEntity;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
web.multitask.trismegistoservices.model.DriveRequest
;
import
web.multitask.trismegistoservices.services.DriveService
;
import
web.multitask.trismegistoservices.services.
google.
DriveService
;
import
javax.annotation.Nullable
;
@RestController
...
...
@@ -25,16 +25,21 @@ public class DriveApi {
String
folder_id
=
request
.
getFolder_id
();
String
file_name
=
request
.
getFile_name
();
MultipartFile
file
=
request
.
getFile
();
String
responseDrive
=
driveService
.
uploadFile
(
folder_id
,
file_name
,
file
,
new
JSONObject
());
String
base64
=
request
.
getBase64
();
String
id_file_response
=
driveService
.
uploadFile
(
folder_id
,
file_name
,
file
,
base64
);
JSONObject
response
=
new
JSONObject
();
if
(
responseDriv
e
==
null
)
{
if
(
id_file_respons
e
==
null
)
{
response
.
put
(
"status"
,
false
);
response
.
put
(
"message"
,
"Error al subir el archivo"
);
response
.
put
(
"message"
,
"No se pudo subir el archivo,"
+
" existe multiples razones por las cuales esto puede ocurrir,"
+
" por favor verifique que el archivo no sea muy grande o que el formato sea correcto"
);
return
ResponseEntity
.
badRequest
().
body
(
response
.
toMap
());
}
else
{
response
.
put
(
"status"
,
true
);
response
.
put
(
"message"
,
"Archivo subido correctamente"
);
response
.
put
(
"file_id"
,
responseDrive
);
response
.
put
(
"file_id"
,
id_file_response
);
response
.
put
(
"file_url"
,
"https://drive.google.com/file/d/"
+
id_file_response
+
"/view?usp=sharing"
);
response
.
put
(
"download_url"
,
"https://drive.google.com/uc?export=download&id="
+
id_file_response
);
return
ResponseEntity
.
ok
(
response
.
toMap
());
}
}
catch
(
Exception
e
)
{
...
...
@@ -44,8 +49,7 @@ public class DriveApi {
@GetMapping
(
path
=
"/public/download/{id}"
)
public
ResponseEntity
<?>
downloadFile
(
@PathVariable
String
id
,
@Nullable
@RequestParam
(
name
=
"base64"
)
Boolean
base64
)
{
if
(
base64
==
null
)
base64
=
false
;
return
driveService
.
getFile
(
id
,
base64
);
return
driveService
.
getFile
(
id
,
!(
base64
==
null
));
}
...
...
src/main/java/web/multitask/trismegistoservices/api/EmailApi.java
View file @
bcc3c3a5
// package web.multitask.app.api;
// import javax.mail.internet.MimeMessage;
// import io.github.cdimascio.dotenv.Dotenv;
// import org.json.JSONObject;
// import org.springframework.http.MediaType;
// import org.springframework.http.ResponseEntity;
// import org.springframework.web.bind.annotation.ModelAttribute;
// import org.springframework.web.bind.annotation.RestController;
// import web.multitask.app.model.EmailRequest;
// import web.multitask.app.mysql.EmailMysql;
// import web.multitask.app.service.EmailService;
// import org.springframework.web.bind.annotation.RequestMapping;
// import org.springframework.web.bind.annotation.RequestMethod;
// @RestController
// @RequestMapping("/email")
// public class EmailApi {
// private final Dotenv dotenv;
// private final EmailService emailService;
// private final EmailMysql emailMysql;
// public EmailApi(EmailService emailService, EmailMysql emailMysql, Dotenv dotenv) {
// this.emailService = emailService;
// this.emailMysql = emailMysql;
// this.dotenv = dotenv;
// }
// @RequestMapping(path = "/public/simple_generate", method = RequestMethod.POST, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
// public ResponseEntity<?> simple(@ModelAttribute EmailRequest request) {
// try {
// MimeMessage message = emailService.simpleMessage(request);
// JSONObject response = emailService.send(message);
// return ResponseEntity.ok(response.toMap());
// } catch (Exception e) {
// return ResponseEntity.internalServerError().body(new JSONObject().put("message", e.getMessage()).put("status", false).toMap());
// }
// }
// @RequestMapping(path = "/private/generate", method = RequestMethod.POST, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
// public ResponseEntity<?> full(@ModelAttribute EmailRequest request) {
// try {
// MimeMessage message = emailService.htmlMessage(request);
// JSONObject response = emailService.send(message);
// return ResponseEntity.ok(response.toMap());
// } catch (Exception e) {
// return ResponseEntity.internalServerError().body(new JSONObject().put("message", e.getMessage()).put("status", false).toMap());
// }
// }
// @RequestMapping(path = "/service/confirmation", method = RequestMethod.POST, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
// public ResponseEntity<?> template(@ModelAttribute EmailRequest request) {
// try {
// String URL = dotenv.get("URL_CONFIRMATION");
// assert URL != null;
// JSONObject extra = request.getExtra();
// JSONObject response = emailMysql.getHTMLTemplate(extra);
// if(response.getBoolean("status")){
// JSONObject data = response.getJSONArray("data").getJSONObject(0);
// String html = data.getString("html");
// html = html.replaceAll("TOKEN", extra.getString("token"));
// html = html.replaceAll("URL", URL);
// request.setBody(html);
// MimeMessage message = emailService.htmlMessage(request);
// JSONObject responseEmail = emailService.send(message);
// return ResponseEntity.ok(responseEmail.toMap());
// }else{
// return ResponseEntity.internalServerError().body(new JSONObject().put("message", response.getString("message")).put("status", false).toMap());
// }
// } catch (Exception e) {
// return ResponseEntity.internalServerError().body(new JSONObject().put("message", e.getMessage()).put("status", false).toMap());
// }
// }
// }
\ No newline at end of file
package
web
.
multitask
.
trismegistoservices
.
api
;
import
javax.mail.internet.MimeMessage
;
import
io.github.cdimascio.dotenv.Dotenv
;
import
lombok.AllArgsConstructor
;
import
org.json.JSONObject
;
import
org.springframework.http.MediaType
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.ModelAttribute
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
web.multitask.trismegistoservices.model.GmailRequest
;
import
web.multitask.trismegistoservices.mysql.EmailMysql
;
import
web.multitask.trismegistoservices.services.google.GmailService
;
@RestController
@RequestMapping
(
"/gmail"
)
@AllArgsConstructor
public
class
EmailApi
{
private
final
Dotenv
dotenv
;
private
final
GmailService
emailService
;
private
final
EmailMysql
emailMysql
;
@RequestMapping
(
path
=
"/public/generate"
,
method
=
RequestMethod
.
POST
,
consumes
=
{
MediaType
.
MULTIPART_FORM_DATA_VALUE
})
public
ResponseEntity
<?>
full
(
@ModelAttribute
GmailRequest
request
)
{
try
{
MimeMessage
message
=
emailService
.
htmlMessage
(
request
);
JSONObject
response
=
emailService
.
send
(
message
);
return
ResponseEntity
.
ok
(
response
.
toMap
());
}
catch
(
Exception
e
)
{
return
ResponseEntity
.
internalServerError
().
body
(
new
JSONObject
().
put
(
"message"
,
e
.
getMessage
()).
put
(
"status"
,
false
).
toMap
());
}
}
@RequestMapping
(
path
=
"/service/confirmation"
,
method
=
RequestMethod
.
POST
,
consumes
=
{
MediaType
.
MULTIPART_FORM_DATA_VALUE
})
public
ResponseEntity
<?>
template
(
@ModelAttribute
GmailRequest
request
)
{
try
{
String
URL
=
dotenv
.
get
(
"URL_CONFIRMATION"
);
assert
URL
!=
null
;
JSONObject
extra
=
request
.
getExtra
();
JSONObject
response
=
emailMysql
.
getHTMLTemplate
(
extra
);
if
(
response
.
getBoolean
(
"status"
)){
JSONObject
data
=
response
.
getJSONArray
(
"data"
).
getJSONObject
(
0
);
String
html
=
data
.
getString
(
"html"
);
html
=
html
.
replaceAll
(
"TOKEN"
,
extra
.
getString
(
"token"
));
html
=
html
.
replaceAll
(
"URL"
,
URL
);
request
.
setBody
(
html
);
MimeMessage
message
=
emailService
.
htmlMessage
(
request
);
JSONObject
responseEmail
=
emailService
.
send
(
message
);
return
ResponseEntity
.
ok
(
responseEmail
.
toMap
());
}
else
{
return
ResponseEntity
.
internalServerError
().
body
(
new
JSONObject
().
put
(
"message"
,
response
.
getString
(
"message"
)).
put
(
"status"
,
false
).
toMap
());
}
}
catch
(
Exception
e
)
{
return
ResponseEntity
.
internalServerError
().
body
(
new
JSONObject
().
put
(
"message"
,
e
.
getMessage
()).
put
(
"status"
,
false
).
toMap
());
}
}
}
\ No newline at end of file
src/main/java/web/multitask/trismegistoservices/api/JWTokenApi.java
View file @
bcc3c3a5
...
...
@@ -8,6 +8,7 @@ import org.springframework.security.core.userdetails.UserDetails;
import
org.springframework.web.bind.annotation.*
;
import
web.multitask.trismegistoservices.model.User
;
import
web.multitask.trismegistoservices.repository.UserRespository
;
import
web.multitask.trismegistoservices.singleton.TokenSingleton
;
import
web.multitask.trismegistoservices.utils.JWTokenUtil
;
import
java.math.BigInteger
;
...
...
@@ -25,6 +26,18 @@ class JWTokenApi {
private
final
JWTokenUtil
jwtTokenUtil
;
private
final
UserRespository
userRepo
;
private
final
TokenSingleton
tokenSingleton
;
@PostMapping
(
"/database"
)
public
ResponseEntity
<?>
setDatabase
(
@RequestBody
String
token
)
{
JSONObject
json
=
new
JSONObject
(
token
);
if
(
json
.
has
(
"db"
)
&&
json
.
has
(
"user"
)
&&
json
.
has
(
"password"
)
&&
json
.
has
(
"url"
))
{
String
dataToken
=
jwtTokenUtil
.
generateDataSource
(
json
);
return
ResponseEntity
.
ok
(
new
JSONObject
().
put
(
"token"
,
dataToken
).
put
(
"message"
,
"Generated"
).
put
(
"status"
,
true
).
toMap
());
}
else
{
return
ResponseEntity
.
status
(
400
).
body
(
new
JSONObject
().
put
(
"token"
,
""
).
put
(
"message"
,
"Invalid Data"
).
put
(
"status"
,
false
).
toMap
());
}
}
@PostMapping
(
"/authenticate"
)
public
ResponseEntity
<?>
createAuthenticationToken
(
@RequestBody
String
authenticationRequest
)
{
...
...
@@ -37,7 +50,12 @@ class JWTokenApi {
response
=
new
JSONObject
().
put
(
"token"
,
""
).
put
(
"message"
,
"Invalid Credentials"
).
put
(
"status"
,
false
);
return
ResponseEntity
.
status
(
401
).
body
(
response
.
toMap
());
}
else
{
return
ResponseEntity
.
ok
(
new
JSONObject
().
put
(
"token"
,
jwtTokenUtil
.
generateToken
((
User
)
userDetails
,
json
.
optBigInteger
(
"ms"
,
BigInteger
.
valueOf
(
3600000
)))).
put
(
"message"
,
"Generated"
).
put
(
"status"
,
true
).
toMap
());
boolean
onelife
=
json
.
optBoolean
(
"onelife"
,
false
);
String
generatedToken
=
jwtTokenUtil
.
generateToken
((
User
)
userDetails
,
json
.
optBigInteger
(
"ms"
,
onelife
?
BigInteger
.
valueOf
(
0
)
:
BigInteger
.
valueOf
(
3600000
)));
if
(
onelife
){
tokenSingleton
.
addToken
(
generatedToken
);
}
return
ResponseEntity
.
ok
(
new
JSONObject
().
put
(
"token"
,
generatedToken
).
put
(
"message"
,
"Generated"
).
put
(
"status"
,
true
).
toMap
());
}
}
catch
(
Exception
e
)
{
response
=
new
JSONObject
().
put
(
"token"
,
""
).
put
(
"message"
,
"Invalid Credentials"
).
put
(
"status"
,
false
);
...
...
@@ -89,7 +107,12 @@ class JWTokenApi {
if
(
userDetails
==
null
)
{
return
ResponseEntity
.
status
(
401
).
body
(
new
JSONObject
().
put
(
"token"
,
""
).
put
(
"message"
,
"Invalid Credentials"
).
put
(
"status"
,
false
).
toMap
());
}
else
if
(
userDetails
.
getAuthorities
().
stream
().
anyMatch
(
a
->
a
.
getAuthority
().
equals
(
"SERVICE"
)))
{
return
ResponseEntity
.
ok
(
new
JSONObject
().
put
(
"token"
,
jwtTokenUtil
.
generateToken
((
User
)
userDetails
,
json
.
optBigInteger
(
"ms"
,
BigInteger
.
valueOf
(
3600000
)))).
put
(
"message"
,
"Generated"
).
put
(
"status"
,
true
).
toMap
());
boolean
onelife
=
json
.
optBoolean
(
"onelife"
,
false
);
String
generatedToken
=
jwtTokenUtil
.
generateToken
((
User
)
userDetails
,
json
.
optBigInteger
(
"ms"
,
onelife
?
BigInteger
.
valueOf
(
0
)
:
BigInteger
.
valueOf
(
3600000
)));
if
(
onelife
){
tokenSingleton
.
addToken
(
generatedToken
);
}
return
ResponseEntity
.
ok
(
new
JSONObject
().
put
(
"token"
,
generatedToken
).
put
(
"message"
,
"Generated"
).
put
(
"status"
,
true
).
toMap
());
}
else
{
return
ResponseEntity
.
status
(
401
).
body
(
new
JSONObject
().
put
(
"token"
,
""
).
put
(
"message"
,
"Invalid Credentials"
).
put
(
"status"
,
false
).
toMap
());
}
...
...
@@ -98,7 +121,7 @@ class JWTokenApi {
@PostMapping
(
"/remaining"
)
public
ResponseEntity
<?>
remainingTime
(
@RequestBody
String
token
)
{
JSONObject
json
=
new
JSONObject
(
token
);
try
{
try
{
int
remaining
=
jwtTokenUtil
.
getExperyTime
(
json
.
getString
(
"token"
));
return
ResponseEntity
.
ok
(
new
JSONObject
().
put
(
"remaining"
,
remaining
).
put
(
"message"
,
"OK"
).
put
(
"status"
,
true
).
toMap
());
}
catch
(
Exception
e
)
{
...
...
src/main/java/web/multitask/trismegistoservices/api/
App
Api.java
→
src/main/java/web/multitask/trismegistoservices/api/
Routine
Api.java
View file @
bcc3c3a5
...
...
@@ -5,25 +5,29 @@ import org.json.JSONArray;
import
org.json.JSONObject
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.*
;
import
web.multitask.trismegistoservices.mysql.
ProcedureMys
ql
;
import
web.multitask.trismegistoservices.mysql.
RoutineS
ql
;
import
web.multitask.trismegistoservices.repository.UserRespository
;
@RestController
@CrossOrigin
(
"*"
)
@RequestMapping
(
"/api"
)
@AllArgsConstructor
public
class
App
Api
{
public
class
Routine
Api
{
final
ProcedureMys
ql
procedureMysql
;
final
RoutineS
ql
procedureMysql
;
final
UserRespository
userRepo
;
@PostMapping
(
"/p
rivate/procedur
e"
)
public
ResponseEntity
<?>
call
Procedur
e
(
@RequestBody
String
body
)
{
@PostMapping
(
"/p
ublic/routin
e"
)
public
ResponseEntity
<?>
call
Routin
e
(
@RequestBody
String
body
)
{
JSONObject
json
=
new
JSONObject
(
body
);
if
(
json
.
has
(
"
procedur
e"
))
{
if
(
json
.
has
(
"
routin
e"
))
{
try
{
JSONArray
params
=
json
.
isNull
(
"params"
)
?
new
JSONArray
()
:
json
.
getJSONArray
(
"params"
);
JSONObject
response
=
procedureMysql
.
ProcedureExecution
(
json
.
getString
(
"procedure"
),
json
.
getString
(
"database"
),
params
.
toList
().
toArray
());
String
routine
=
json
.
getString
(
"routine"
);
String
database
=
json
.
optString
(
"database"
);
JSONObject
response
=
procedureMysql
.
routineExecutor
(
routine
,
database
,
params
.
toList
().
toArray
());
return
ResponseEntity
.
ok
(
response
.
toMap
());
}
catch
(
Exception
e
)
{
return
ResponseEntity
.
internalServerError
().
body
(
new
JSONObject
().
put
(
"message"
,
e
.
getMessage
()).
put
(
"status"
,
false
).
toMap
());
...
...
src/main/java/web/multitask/trismegistoservices/config/DotEnvConfig.java
View file @
bcc3c3a5
//
package web.multitask.trismegistoservices.config;
package
web
.
multitask
.
trismegistoservices
.
config
;
//
import org.springframework.context.annotation.Bean;
//
import org.springframework.context.annotation.Configuration;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
//
import io.github.cdimascio.dotenv.Dotenv;
//
import web.multitask.trismegistoservices.utils.DotEnvUtil;
import
io.github.cdimascio.dotenv.Dotenv
;
import
web.multitask.trismegistoservices.utils.DotEnvUtil
;
//
@Configuration
//
public class DotEnvConfig {
@Configuration
public
class
DotEnvConfig
{
//
@Bean
//
Dotenv getDotEnvPath() {
//
return Dotenv.configure().directory(DotEnvUtil.getDotEnvPath("trismegisto-asistencia")).load();
//
}
@Bean
Dotenv
getDotEnvPath
()
{
return
Dotenv
.
configure
().
directory
(
DotEnvUtil
.
getDotEnvPath
(
"trismegisto-asistencia"
)).
load
();
}
// }
\ No newline at end of file
}
\ No newline at end of file
src/main/java/web/multitask/trismegistoservices/config/EmailConfig.java
View file @
bcc3c3a5
//
package web.multitask.app.config;
//
// package web.multitask.trismegistoservices.config;
// import java.util.Properties;
//
// import javax.mail.Session;
//
// import lombok.AllArgsConstructor;
// import lombok.NoArgsConstructor;
// import org.springframework.context.annotation.Bean;
// import org.springframework.context.annotation.Configuration;
//
// import io.github.cdimascio.dotenv.Dotenv;
//
// @Configuration
//// @AllArgsConstructor
// public class EmailConfig {
// Dotenv dotenv;
// public EmailConfig(Dotenv dotenv) {
// this.dotenv = dotenv;
// }
//
//// Dotenv dotenv;
//
// @Bean
// public Session setSession() {
// Properties properties = new Properties();
// String enabled = dotenv.get("EMAIL_STARTTLS_ENABLE");
// String email = dotenv.get("EMAIL_CORREO");
// String password = dotenv.get("EMAIL_PASSWORD");
// String port = dotenv.get("EMAIL_PORT");
// String host = dotenv.get("EMAIL_HOST");
// String enabled =
"true";//
dotenv.get("EMAIL_STARTTLS_ENABLE");
// String email =
"trismegisto.planilla@sacooliveros.edu.pe";//
dotenv.get("EMAIL_CORREO");
// String password =
"Saco1357$";//
dotenv.get("EMAIL_PASSWORD");
// String port =
"587";//
dotenv.get("EMAIL_PORT");
// String host =
"smtp.gmail.com";//
dotenv.get("EMAIL_HOST");
// properties.put("mail.smtp.host", host);
// properties.put("mail.smtp.starttls.enable", enabled);
// properties.put("mail.smtp.port", port);
...
...
@@ -33,11 +32,11 @@
// properties.put("mail.smtp.password", password);
// properties.put("mail.smtp.user", email);
// properties.put("mail.smtp.auth", enabled);
// properties.put("mail.smtp.ssl.trust", "smtp.gmail.com");
// properties.put("mail.smtp.ssl.trust", "smtp.gmail.com");
// properties.put("mail.smtp.socketFactory.port", port);
// properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
// properties.put("mail.smtp.ssl.protocols", "TLSv1.2");
// return Session.getDefaultInstance(properties);
// }
//
// }
src/main/java/web/multitask/trismegistoservices/config/GoogleConfig.java
View file @
bcc3c3a5
package
web
.
multitask
.
trismegistoservices
.
config
;
import
java.io.FileNotFoundException
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.*
;
import
java.net.HttpURLConnection
;
import
java.net.URL
;
import
java.net.URLEncoder
;
import
java.nio.charset.StandardCharsets
;
import
java.security.GeneralSecurityException
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.*
;
import
com.google.api.client.auth.oauth2.Credential
;
import
com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets
;
import
com.google.api.client.googleapis.auth.oauth2.GoogleCredential
;
import
com.google.api.services.gmail.Gmail
;
import
com.google.api.services.gmail.GmailScopes
;
import
org.json.JSONObject
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
com.google.api.client.googleapis.javanet.GoogleNetHttpTransport
;
...
...
@@ -17,33 +24,108 @@ import com.google.api.services.drive.DriveScopes;
import
com.google.auth.http.HttpCredentialsAdapter
;
import
com.google.auth.oauth2.GoogleCredentials
;
import
javax.annotation.PostConstruct
;
@Configuration
public
class
GoogleConfig
{
private
static
final
List
<
String
>
SCOPES
=
Collections
.
singletonList
(
DriveScopes
.
DRIVE
);
private
static
final
String
CREDENTIALS_FILE_PATH
=
"/trimegistro-mongo-3e687dba9acb
.json"
;
private
static
final
JsonFactory
JSON_FACTORY
=
GsonFactory
.
getDefaultInstance
(
);
private
static
final
String
OAUTH2
=
"/oAuth2
.json"
;
private
static
final
String
CREDENTIALS_FOLDER_PATH
=
"/tokens"
;
@Bean
private
final
String
APPLICATION_NAME
=
"FullService Application"
;
private
String
refresh_token_gmail
=
null
;
private
String
refresh_token_drive
=
null
;
private
String
client_id
=
null
;
private
String
client_secret
=
null
;
@PostConstruct
public
void
getGoogleCredentials
()
{
try
{
InputStream
in
=
GoogleConfig
.
class
.
getResourceAsStream
(
CREDENTIALS_FOLDER_PATH
+
OAUTH2
);
if
(
in
==
null
)
throw
new
FileNotFoundException
(
"Resource not found: "
+
CREDENTIALS_FOLDER_PATH
+
OAUTH2
);
GoogleClientSecrets
clientSecrets
=
GoogleClientSecrets
.
load
(
JSON_FACTORY
,
new
InputStreamReader
(
in
));
client_id
=
clientSecrets
.
getDetails
().
getClientId
();
client_secret
=
clientSecrets
.
getDetails
().
getClientSecret
();
refresh_token_gmail
=
clientSecrets
.
getDetails
().
get
(
"gmail_refresh_token"
).
toString
();
refresh_token_drive
=
clientSecrets
.
getDetails
().
get
(
"drive_refresh_token"
).
toString
();
}
catch
(
IOException
e
)
{
System
.
out
.
println
(
"Error: "
+
e
);
}
}
public
Drive
getDrive
()
{
try
{
String
APPLICATION_NAME
=
"FullService Application"
;
JsonFactory
JSON_FACTORY
=
GsonFactory
.
getDefaultInstance
();
final
NetHttpTransport
HTTP_TRANSPORT
=
GoogleNetHttpTransport
.
newTrustedTransport
();
return
new
Drive
.
Builder
(
HTTP_TRANSPORT
,
JSON_FACTORY
,
new
HttpCredentialsAdapter
(
getCredentials
(
HTTP_TRANSPORT
)))
.
setApplicationName
(
APPLICATION_NAME
)
.
build
();
NetHttpTransport
HTTP_TRANSPORT
=
GoogleNetHttpTransport
.
newTrustedTransport
();
Credential
authorize
=
new
GoogleCredential
.
Builder
().
setTransport
(
GoogleNetHttpTransport
.
newTrustedTransport
())
.
setJsonFactory
(
JSON_FACTORY
)
.
setClientSecrets
(
client_id
,
client_secret
)
.
build
()
.
setAccessToken
(
getAccessToken
(
refresh_token_drive
))
.
setRefreshToken
(
refresh_token_drive
);
return
new
Drive
.
Builder
(
HTTP_TRANSPORT
,
JSON_FACTORY
,
authorize
)
.
setApplicationName
(
APPLICATION_NAME
).
build
();
}
catch
(
GeneralSecurityException
|
IOException
e
)
{
System
.
out
.
println
(
"Error: "
+
e
);
return
null
;
}
}
GoogleCredentials
getCredentials
(
final
NetHttpTransport
HTTP_TRANSPORT
)
throws
IOException
{
InputStream
in
=
GoogleConfig
.
class
.
getResourceAsStream
(
CREDENTIALS_FOLDER_PATH
+
CREDENTIALS_FILE_PATH
);
if
(
in
==
null
)
throw
new
FileNotFoundException
(
"Resource not found: "
+
CREDENTIALS_FOLDER_PATH
+
CREDENTIALS_FILE_PATH
);
return
GoogleCredentials
.
fromStream
(
in
).
createScoped
(
SCOPES
);
public
Gmail
getGmail
()
{
try
{
NetHttpTransport
HTTP_TRANSPORT
=
GoogleNetHttpTransport
.
newTrustedTransport
();
Credential
authorize
=
new
GoogleCredential
.
Builder
().
setTransport
(
GoogleNetHttpTransport
.
newTrustedTransport
())
.
setJsonFactory
(
JSON_FACTORY
)
.
setClientSecrets
(
client_id
,
client_secret
)
.
build
()
.
setAccessToken
(
getAccessToken
(
refresh_token_gmail
))
.
setRefreshToken
(
refresh_token_gmail
);
return
new
Gmail
.
Builder
(
HTTP_TRANSPORT
,
JSON_FACTORY
,
authorize
)
.
setApplicationName
(
APPLICATION_NAME
).
build
();
}
catch
(
GeneralSecurityException
|
IOException
e
)
{
System
.
out
.
println
(
"Error: "
+
e
);
return
null
;
}
}
public
String
getAccessToken
(
String
refresh_token
)
{
try
{
Map
<
String
,
Object
>
params
=
new
LinkedHashMap
<>();
params
.
put
(
"grant_type"
,
"refresh_token"
);
params
.
put
(
"client_id"
,
client_id
);
params
.
put
(
"client_secret"
,
client_secret
);
params
.
put
(
"refresh_token"
,
refresh_token
);
StringBuilder
postData
=
new
StringBuilder
();
for
(
Map
.
Entry
<
String
,
Object
>
param
:
params
.
entrySet
())
{
if
(
postData
.
length
()
!=
0
)
{
postData
.
append
(
'&'
);
}
postData
.
append
(
URLEncoder
.
encode
(
param
.
getKey
(),
"UTF-8"
));
postData
.
append
(
'='
);
postData
.
append
(
URLEncoder
.
encode
(
String
.
valueOf
(
param
.
getValue
()),
"UTF-8"
));
}
byte
[]
postDataBytes
=
postData
.
toString
().
getBytes
(
StandardCharsets
.
UTF_8
);
URL
url
=
new
URL
(
"https://accounts.google.com/o/oauth2/token"
);
HttpURLConnection
con
=
(
HttpURLConnection
)
url
.
openConnection
();
con
.
setDoOutput
(
true
);
con
.
setUseCaches
(
false
);
con
.
setRequestMethod
(
"POST"
);
con
.
getOutputStream
().
write
(
postDataBytes
);
BufferedReader
reader
=
new
BufferedReader
(
new
InputStreamReader
(
con
.
getInputStream
()));
StringBuilder
buffer
=
new
StringBuilder
();
for
(
String
line
=
reader
.
readLine
();
line
!=
null
;
line
=
reader
.
readLine
())
{
buffer
.
append
(
line
);
}
JSONObject
json
=
new
JSONObject
(
buffer
.
toString
());
return
json
.
getString
(
"access_token"
);
}
catch
(
Exception
ex
)
{
System
.
out
.
println
(
"Error: "
+
ex
);
}
return
null
;
}
}
\ No newline at end of file
src/main/java/web/multitask/trismegistoservices/config/MVCConfig.java
View file @
bcc3c3a5
...
...
@@ -10,7 +10,7 @@ public class MVCConfig
implements
WebMvcConfigurer
{
@Override
public
void
addCorsMappings
(
@NonNull
CorsRegistry
registry
)
{
registry
.
addMapping
(
"/**"
)
.
allowedMethods
(
"HEAD"
,
"GET"
,
"PUT"
,
"POST"
,
"DELETE"
,
"PATCH"
);
//
registry.addMapping("/**")
//
.allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH");
}
}
\ No newline at end of file
src/main/java/web/multitask/trismegistoservices/config/SecurityConfig.java
View file @
bcc3c3a5
...
...
@@ -19,6 +19,8 @@ import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import
org.springframework.web.filter.CorsFilter
;
import
web.multitask.trismegistoservices.filter.JWTokenFilter
;
import
web.multitask.trismegistoservices.repository.UserRespository
;
import
web.multitask.trismegistoservices.singleton.ThreadLocalSingleton
;
import
web.multitask.trismegistoservices.singleton.TokenSingleton
;
import
web.multitask.trismegistoservices.utils.JWTokenUtil
;
@Configuration
...
...
@@ -28,6 +30,8 @@ public class SecurityConfig{
private
final
UserRespository
userRepo
;
private
final
JWTokenUtil
jwtTokenUtil
;
private
final
TokenSingleton
tokenSingleton
;
private
ThreadLocalSingleton
threadLocalSingleton
;
@Bean
AuthenticationManager
authenticationManager
(
AuthenticationConfiguration
authenticationConfiguration
)
...
...
@@ -46,12 +50,8 @@ public class SecurityConfig{
.
regexMatchers
(
".*/public/.*"
).
permitAll
()
.
regexMatchers
(
".*/service/.*"
).
hasAnyAuthority
(
"ADMIN"
,
"SERVICE"
)
.
antMatchers
(
HttpMethod
.
GET
,
"/**"
).
permitAll
()
// .antMatchers(HttpMethod.POST, "/**").permitAll()
.
antMatchers
(
"/token/**"
).
permitAll
());
// .anyRequest()
// .authenticated());
http
.
addFilterBefore
(
new
JWTokenFilter
(
jwtTokenUtil
,
userRepo
),
UsernamePasswordAuthenticationFilter
.
class
);
http
.
addFilterBefore
(
new
JWTokenFilter
(
jwtTokenUtil
,
userRepo
,
tokenSingleton
,
threadLocalSingleton
),
UsernamePasswordAuthenticationFilter
.
class
);
return
http
.
build
();
}
...
...
@@ -60,16 +60,15 @@ public class SecurityConfig{
return
new
BCryptPasswordEncoder
();
}
@Bean
CorsFilter
corsFilter
()
{
UrlBasedCorsConfigurationSource
source
=
new
UrlBasedCorsConfigurationSource
();
CorsConfiguration
config
=
new
CorsConfiguration
();
// config.setAllowCredentials(true);
config
.
addAllowedOrigin
(
"*"
);
config
.
addAllowedHeader
(
"*"
);
config
.
addAllowedMethod
(
"*"
);
source
.
registerCorsConfiguration
(
"/**"
,
config
);
return
new
CorsFilter
(
source
);
}
// @Bean
// CorsFilter corsFilter() {
// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
// CorsConfiguration config = new CorsConfiguration();
// config.addAllowedOrigin("*");
// config.addAllowedHeader("*");
// config.addAllowedMethod("*");
// source.registerCorsConfiguration("/**", config);
// return new CorsFilter(source);
// }
}
\ No newline at end of file
src/main/java/web/multitask/trismegistoservices/filter/JWTokenFilter.java
View file @
bcc3c3a5
...
...
@@ -4,6 +4,7 @@ import javax.servlet.FilterChain;
import
javax.servlet.ServletException
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.sql.DataSource
;
import
lombok.AllArgsConstructor
;
import
lombok.NoArgsConstructor
;
...
...
@@ -11,15 +12,18 @@ import org.jetbrains.annotations.NotNull;
import
org.json.JSONObject
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.jdbc.core.JdbcTemplate
;
import
org.springframework.jdbc.datasource.DriverManagerDataSource
;
import
org.springframework.security.authentication.UsernamePasswordAuthenticationToken
;
import
org.springframework.security.core.context.SecurityContextHolder
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.security.web.authentication.WebAuthenticationDetailsSource
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.filter.OncePerRequestFilter
;
import
io.jsonwebtoken.io.IOException
;
import
web.multitask.trismegistoservices.repository.UserRespository
;
import
web.multitask.trismegistoservices.singleton.ThreadLocalSingleton
;
import
web.multitask.trismegistoservices.singleton.TokenSingleton
;
import
web.multitask.trismegistoservices.utils.JWTokenUtil
;
@Component
...
...
@@ -30,24 +34,34 @@ public class JWTokenFilter extends OncePerRequestFilter {
private
JWTokenUtil
jwtTokenUtil
=
null
;
private
UserRespository
userRepo
=
null
;
private
TokenSingleton
tokenSingleton
=
null
;
private
ThreadLocalSingleton
threadLocalSingleton
=
null
;
@Override
protected
void
doFilterInternal
(
HttpServletRequest
request
,
@NotNull
HttpServletResponse
response
,
@NotNull
FilterChain
chain
)
throws
ServletException
,
IOException
,
java
.
io
.
IOException
{
response
.
setContentType
(
"application/json"
);
response
.
setContentType
(
"application/json"
);
final
String
Authorization
=
request
.
getHeader
(
HttpHeaders
.
AUTHORIZATION
);
final
String
dbConnection
=
request
.
getHeader
(
"Database"
);
String
token
;
try
{
token
=
Authorization
.
split
(
" "
)[
1
];
}
catch
(
Exception
e
)
{
token
=
null
;
}
if
(
dbConnection
!=
null
&&
!
dbConnection
.
isEmpty
()){
String
dataBaseGotten
=
jwtTokenUtil
.
getDataToken
(
dbConnection
);
DataSource
ds
=
getDataSource
(
new
JSONObject
(
dataBaseGotten
));
threadLocalSingleton
.
setJdbcTemplate
(
new
JdbcTemplate
(
ds
));
}
if
(
token
==
null
||
token
.
isEmpty
())
{
chain
.
doFilter
(
request
,
response
);
}
else
{
if
(
jwtTokenUtil
.
validateToken
(
token
)
)
{
if
(
jwtTokenUtil
.
validateToken
(
token
)
||
tokenSingleton
.
consumeToken
(
token
))
{
JSONObject
jsonToken
=
new
JSONObject
(
jwtTokenUtil
.
getDataToken
(
token
));
UserDetails
userDetails
=
userRepo
.
findByUsername
(
jsonToken
.
getString
(
"username"
));
UsernamePasswordAuthenticationToken
authentication
=
new
UsernamePasswordAuthenticationToken
(
...
...
@@ -61,4 +75,28 @@ public class JWTokenFilter extends OncePerRequestFilter {
}
}
}
private
DriverManagerDataSource
getDataSource
(
JSONObject
json
)
{
String
driver
=
""
;
switch
(
json
.
getString
(
"db"
))
{
case
"mysql"
:
driver
=
"com.mysql.cj.jdbc.Driver"
;
break
;
case
"postgresql"
:
driver
=
"org.postgresql.Driver"
;
break
;
case
"oracle"
:
driver
=
"oracle.jdbc.driver.OracleDriver"
;
break
;
case
"sqlserver"
:
driver
=
"com.microsoft.sqlserver.jdbc.SQLServerDriver"
;
break
;
}
DriverManagerDataSource
dataSource
=
new
DriverManagerDataSource
();
dataSource
.
setDriverClassName
(
driver
);
dataSource
.
setUrl
(
json
.
getString
(
"url"
));
dataSource
.
setUsername
(
json
.
getString
(
"user"
));
dataSource
.
setPassword
(
json
.
getString
(
"password"
));
return
dataSource
;
}
}
\ No newline at end of file
src/main/java/web/multitask/trismegistoservices/interfaces/IDriveService.java
View file @
bcc3c3a5
...
...
@@ -8,7 +8,7 @@ import org.springframework.web.multipart.MultipartFile;
import
java.io.OutputStream
;
public
interface
IDriveService
{
String
uploadFile
(
String
folder_id
,
String
file_name
,
MultipartFile
file
,
JSONObject
base64
);
String
uploadFile
(
String
folder_id
,
String
file_name
,
MultipartFile
file
,
String
base64
);
String
createFolder
(
String
folder_id
,
String
folder_name
);
String
deleteFile
(
String
file_id
);
String
deleteFolder
(
String
folder_id
);
...
...
src/main/java/web/multitask/trismegistoservices/model/DriveRequest.java
View file @
bcc3c3a5
...
...
@@ -13,8 +13,6 @@ public class DriveRequest {
private
String
folder_id
;
private
String
file_name
;
private
MultipartFile
file
;
private
String
base64_name
;
private
String
base64_file
;
private
String
base64
;
}
\ No newline at end of file
src/main/java/web/multitask/trismegistoservices/model/
E
mailRequest.java
→
src/main/java/web/multitask/trismegistoservices/model/
G
mailRequest.java
View file @
bcc3c3a5
...
...
@@ -9,7 +9,9 @@ import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
public
class
EmailRequest
{
public
class
GmailRequest
{
private
String
from
;
private
String
alias
;
private
String
to
;
private
String
cc
;
private
String
bcc
;
...
...
src/main/java/web/multitask/trismegistoservices/mysql/
ProcedureMys
ql.java
→
src/main/java/web/multitask/trismegistoservices/mysql/
RoutineS
ql.java
View file @
bcc3c3a5
package
web
.
multitask
.
trismegistoservices
.
mysql
;
import
lombok.AllArgsConstructor
;
import
org.json.JSONObject
;
import
org.springframework.jdbc.core.JdbcTemplate
;
import
org.springframework.stereotype.Service
;
import
web.multitask.trismegistoservices.singleton.ThreadLocalSingleton
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
@Service
public
class
ProcedureMysql
{
private
final
JdbcTemplate
jdbcTemplate
;
@AllArgsConstructor
public
class
RoutineSql
{
public
ProcedureMysql
(
JdbcTemplate
jdbcTemplate
)
{
this
.
jdbcTemplate
=
jdbcTemplate
;
private
final
ThreadLocalSingleton
threadLocalSingleton
;
public
JSONObject
routineExecutor
(
String
routine
,
String
database
,
Object
[]
params
)
{
String
jdbcUrl
;
JdbcTemplate
jdbcTemplate
=
threadLocalSingleton
.
getJdbcTemplate
();
try
{
jdbcUrl
=
Objects
.
requireNonNull
(
jdbcTemplate
.
getDataSource
()).
getConnection
().
getMetaData
().
getURL
();
}
catch
(
Exception
e
)
{
return
new
JSONObject
().
put
(
"message"
,
e
.
getMessage
()).
put
(
"status"
,
false
);
}
switch
(
jdbcUrl
.
split
(
":"
)[
1
])
{
case
"mysql"
:
return
mysqlProcedure
(
routine
,
database
,
params
,
jdbcTemplate
);
case
"postgresql"
:
return
postgreFunction
(
routine
,
database
,
params
,
jdbcTemplate
);
default
:
return
new
JSONObject
().
put
(
"message"
,
"Database not supported"
).
put
(
"status"
,
false
);
}
}
p
ublic
JSONObject
ProcedureExecution
(
String
procedure
,
String
database
,
Object
[]
params
)
{
p
rivate
JSONObject
mysqlProcedure
(
String
routine
,
String
database
,
Object
[]
params
,
JdbcTemplate
jdbcTemplate
)
{
try
{
StringBuilder
query
=
new
StringBuilder
(
"CALL "
+
database
+
"."
+
procedur
e
);
StringBuilder
query
=
new
StringBuilder
(
"CALL "
+
database
+
"."
+
routin
e
);
if
(
params
.
length
>
0
)
{
query
.
append
(
"("
);
...
...
@@ -32,9 +52,9 @@ public class ProcedureMysql {
query
.
append
(
")"
);
}
String
checkProcedure
=
"SELECT COUNT(*) FROM information_schema.routines WHERE routine_schema = '"
+
database
+
"' AND routine_name = '"
+
procedure
;
String
checkProcedure
=
"SELECT COUNT(*) FROM information_schema.routines WHERE routine_schema = '"
+
database
+
"' AND routine_name = '"
+
routine
+
"'"
;
List
<
Map
<
String
,
Object
>>
countProcedure
=
jdbcTemplate
.
queryForList
(
checkProcedure
);
if
(
countProcedure
.
get
(
0
).
get
(
"COUNT(*)"
).
toString
().
equals
(
"0"
))
{
return
new
JSONObject
().
put
(
"message"
,
"Procedure not found"
).
put
(
"status"
,
false
);
}
...
...
@@ -49,4 +69,39 @@ public class ProcedureMysql {
return
new
JSONObject
().
put
(
"data"
,
new
JSONObject
()).
put
(
"message"
,
e
.
getMessage
()).
put
(
"status"
,
false
);
}
}
private
JSONObject
postgreFunction
(
String
routine
,
String
database
,
Object
[]
params
,
JdbcTemplate
jdbcTemplate
)
{
try
{
StringBuilder
query
=
new
StringBuilder
(
"SELECT * FROM "
+
database
+
"."
+
routine
);
if
(
params
.
length
>
0
)
{
query
.
append
(
"("
);
for
(
int
i
=
0
;
i
<
params
.
length
;
i
++)
{
query
.
append
(
"?"
);
if
(
i
<
params
.
length
-
1
)
{
query
.
append
(
","
);
}
}
query
.
append
(
")"
);
}
String
checkFunction
=
"SELECT COUNT(*) FROM information_schema.routines WHERE routine_schema = '"
+
database
+
"' AND routine_name = '"
+
routine
+
"'"
;
List
<
Map
<
String
,
Object
>>
countFunction
=
jdbcTemplate
.
queryForList
(
checkFunction
);
if
(
countFunction
.
get
(
0
).
get
(
"count"
).
toString
().
equals
(
"0"
))
{
return
new
JSONObject
().
put
(
"message"
,
"Function not found"
).
put
(
"status"
,
false
);
}
List
<
Map
<
String
,
Object
>>
list
=
jdbcTemplate
.
queryForList
(
query
.
toString
(),
params
);
JSONObject
result
=
new
JSONObject
();
result
.
put
(
"data"
,
list
);
result
.
put
(
"message"
,
"Success"
);
result
.
put
(
"status"
,
true
);
return
result
;
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
e
.
getMessage
());
return
new
JSONObject
().
put
(
"data"
,
new
JSONObject
()).
put
(
"message"
,
e
.
getMessage
()).
put
(
"status"
,
false
);
}
}
}
\ No newline at end of file
src/main/java/web/multitask/trismegistoservices/services/EmailService.java
deleted
100644 → 0
View file @
4020f7a1
package
web
.
multitask
.
trismegistoservices
.
services
;
// package web.multitask.app.service;
// import java.io.ByteArrayInputStream;
// import java.io.File;
// import java.io.FileInputStream;
// import java.io.FileNotFoundException;
// import java.io.FileOutputStream;
// import java.io.IOException;
// import java.io.InputStream;
// import java.io.UnsupportedEncodingException;
// import java.util.Objects;
// import java.util.Properties;
// import java.util.stream.Collectors;
// import java.util.stream.Stream;
// import javax.activation.DataHandler;
// import javax.activation.FileDataSource;
// import javax.mail.BodyPart;
// import javax.mail.MessagingException;
// import javax.mail.Multipart;
// import javax.mail.Session;
// import javax.mail.Transport;
// import javax.mail.internet.AddressException;
// import javax.mail.internet.InternetAddress;
// import javax.mail.internet.MimeBodyPart;
// import javax.mail.internet.MimeMessage;
// import javax.mail.internet.MimeMultipart;
// import org.json.JSONObject;
// import org.springframework.stereotype.Service;
// import org.springframework.web.multipart.MultipartFile;
// import io.github.cdimascio.dotenv.Dotenv;
// import web.multitask.app.model.EmailRequest;
// import web.multitask.app.utils.CommonUtils;
// @Service
// public class EmailService {
// Dotenv dotenv;
// Session session;
// CommonUtils commonUtils;
// public EmailService(Dotenv dotenv, Session session, CommonUtils commonUtils) {
// this.dotenv = dotenv;
// this.session = session;
// this.commonUtils = commonUtils;
// }
// public MimeMessage htmlMessage(EmailRequest request) throws UnsupportedEncodingException {
// try {
// String email = dotenv.get("EMAIL_CORREO");
// MimeMessage message = new MimeMessage(session);
// message.setFrom(new InternetAddress(email, "FULLSERVICE APPLICATION"));
// message.setSender(new InternetAddress(email, "FULLSERVICE APPLICATION"));
// message.setRecipients(MimeMessage.RecipientType.TO,
// buildRecipients(new JSONObject().put("to", request.getTo()), "to"));
// if (request.getCc() != null) {
// message.setRecipients(MimeMessage.RecipientType.CC,
// buildRecipients(new JSONObject().put("cc", request.getCc()), "cc"));
// }
// if (request.getBcc() != null) {
// message.setRecipients(MimeMessage.RecipientType.BCC,
// buildRecipients(new JSONObject().put("bcc", request.getBcc()), "bcc"));
// }
// message.setSubject(request.getSubject());
// MimeBodyPart texto = new MimeBodyPart();
// texto.setContent(request.getBody(), "text/html; charset=utf-8");
// MimeMultipart multiParte = new MimeMultipart();
// multiParte.addBodyPart(texto);
// try {
// String file_folder = dotenv.get("FILE_FOLDER");
// MultipartFile[] files = request.getFiles();
// for (MultipartFile file : files) {
// BodyPart adjunto = new MimeBodyPart();
// String fileName = file.getOriginalFilename();
// convertByteArrayToFile(file.getBytes(), fileName, file_folder);
// FileDataSource fds = new FileDataSource(file_folder +"/"+ fileName);
// adjunto.setDataHandler(new DataHandler(fds));
// adjunto.setFileName(fds.getName());
// multiParte.addBodyPart(adjunto);
// }
// } catch (Exception e) {
// System.out.println(e.getMessage());
// }
// message.setContent(multiParte);
// return message;
// } catch (MessagingException e) {
// System.out.println(e.getMessage());
// return null;
// }
// }
// public void convertByteArrayToFile (byte[] byteArray, String fileName, String file_folder){
// try (FileOutputStream fos = new FileOutputStream(file_folder +"/"+ fileName)) {
// fos.write(byteArray);
// }catch(Exception e){
// System.out.println(e.getMessage());
// }
// }
// public MimeMessage simpleMessage(EmailRequest request) throws UnsupportedEncodingException {
// try {
// MimeMessage message = new MimeMessage(session);
// String email = dotenv.get("EMAIL_CORREO");
// message.setFrom(new InternetAddress(email, "FULLSERVICE APPLICATION"));
// message.setSender(new InternetAddress(email, "FULLSERVICE APPLICATION"));
// message.setRecipients(MimeMessage.RecipientType.TO,
// buildRecipients(new JSONObject().put("to", request.getTo()), "to"));
// message.setSubject(request.getSubject());
// message.setText(request.getBody());
// return message;
// } catch (MessagingException e) {
// e.printStackTrace();
// return null;
// }
// }
// public JSONObject send(MimeMessage message) {
// try {
// Transport t = session.getTransport("smtp");
// String email = dotenv.get("EMAIL_CORREO");
// String password = dotenv.get("EMAIL_PASSWORD");
// t.connect(email, password);
// t.sendMessage(message, message.getAllRecipients());
// t.close();
// // CommonUtils.deleteAllFiles();
// boolean deletes = commonUtils.deleteAllFiles();
// if(!deletes){
// System.out.println("Error al eliminar los archivos");
// }
// return new JSONObject().put("message", "OK").put("status", true);
// } catch (Exception e) {
// System.out.println(e.getMessage());
// return new JSONObject().put("message", e.getMessage()).put("status", false);
// }
// }
// public InternetAddress[] buildRecipients(JSONObject json, String type) {
// String[] recipients = json.optString(type).split(",");
// InternetAddress[] addresses = new InternetAddress[recipients.length];
// Stream.of(recipients).map(recipient -> {
// try {
// return new InternetAddress(recipient);
// } catch (AddressException e) {
// System.out.println(e.getMessage());
// return null;
// }
// }).filter(Objects::nonNull).collect(Collectors.toList()).toArray(addresses);
// return addresses;
// }
// }
\ No newline at end of file
src/main/java/web/multitask/trismegistoservices/services/DriveService.java
→
src/main/java/web/multitask/trismegistoservices/services/
google/
DriveService.java
View file @
bcc3c3a5
package
web
.
multitask
.
trismegistoservices
.
services
;
package
web
.
multitask
.
trismegistoservices
.
services
.
google
;
import
java.io.*
;
import
java.nio.file.Files
;
import
java.util.Collections
;
import
lombok.AllArgsConstructor
;
...
...
@@ -27,7 +28,7 @@ public class DriveService implements IDriveService {
private
final
CommonUtils
commonUtils
;
@Override
public
String
uploadFile
(
String
folder_id
,
String
file_name
,
MultipartFile
file
,
JSONObject
base64
)
{
public
String
uploadFile
(
String
folder_id
,
String
file_name
,
MultipartFile
file
,
String
base64
)
{
try
{
if
(
null
!=
file
)
{
File
fileMetadata
=
new
File
();
...
...
@@ -40,6 +41,20 @@ public class DriveService implements IDriveService {
new
ByteArrayInputStream
(
file
.
getBytes
())))
.
setFields
(
"id"
).
execute
();
return
uploadFile
.
getId
();
}
else
if
(!
base64
.
isEmpty
())
{
java
.
io
.
File
fileBytes
=
commonUtils
.
base64ToFile
(
base64
,
file_name
);
File
fileMetadata
=
new
File
();
fileMetadata
.
setParents
(
Collections
.
singletonList
(
folder_id
));
fileMetadata
.
setName
(
file_name
);
File
uploadFile
=
googleConfig
.
getDrive
()
.
files
()
.
create
(
fileMetadata
,
new
InputStreamContent
(
MediaType
.
APPLICATION_OCTET_STREAM_VALUE
,
Files
.
newInputStream
(
fileBytes
.
toPath
())))
.
setFields
(
"id"
).
execute
();
return
uploadFile
.
getId
();
}
else
{
return
null
;
}
}
catch
(
Exception
e
)
{
System
.
out
.
printf
(
"Error: "
+
e
);
...
...
src/main/java/web/multitask/trismegistoservices/services/google/GmailService.java
0 → 100644
View file @
bcc3c3a5
package
web
.
multitask
.
trismegistoservices
.
services
.
google
;
import
java.io.ByteArrayOutputStream
;
import
java.io.FileOutputStream
;
import
java.io.UnsupportedEncodingException
;
import
com.google.api.client.util.Base64
;
import
java.util.Objects
;
import
java.util.Properties
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
import
javax.activation.DataHandler
;
import
javax.activation.FileDataSource
;
import
javax.mail.BodyPart
;
import
javax.mail.MessagingException
;
import
javax.mail.Session
;
import
javax.mail.internet.AddressException
;
import
javax.mail.internet.InternetAddress
;
import
javax.mail.internet.MimeBodyPart
;
import
javax.mail.internet.MimeMessage
;
import
javax.mail.internet.MimeMultipart
;
import
com.google.api.services.gmail.model.Message
;
import
org.json.JSONObject
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.multipart.MultipartFile
;
import
web.multitask.trismegistoservices.config.GoogleConfig
;
import
web.multitask.trismegistoservices.model.GmailRequest
;
@Service
public
class
GmailService
{
private
final
GoogleConfig
googleConfig
;
public
GmailService
(
GoogleConfig
googleConfig
)
{
this
.
googleConfig
=
googleConfig
;
}
Properties
props
=
new
Properties
();
Session
session
=
Session
.
getDefaultInstance
(
props
,
null
);
public
MimeMessage
htmlMessage
(
GmailRequest
request
)
throws
UnsupportedEncodingException
{
try
{
MimeMessage
message
=
new
MimeMessage
(
session
);
String
alias
=
(
request
.
getAlias
()
==
null
||
request
.
getAlias
().
isEmpty
())
?
request
.
getFrom
()
:
request
.
getAlias
();
message
.
setFrom
(
new
InternetAddress
(
request
.
getFrom
(),
alias
));
message
.
setSender
(
new
InternetAddress
(
request
.
getFrom
(),
alias
));
message
.
setRecipients
(
MimeMessage
.
RecipientType
.
TO
,
buildRecipients
(
new
JSONObject
().
put
(
"to"
,
request
.
getTo
()),
"to"
));
if
(
request
.
getCc
()
!=
null
)
{
message
.
setRecipients
(
MimeMessage
.
RecipientType
.
CC
,
buildRecipients
(
new
JSONObject
().
put
(
"cc"
,
request
.
getCc
()),
"cc"
));
}
if
(
request
.
getBcc
()
!=
null
)
{
message
.
setRecipients
(
MimeMessage
.
RecipientType
.
BCC
,
buildRecipients
(
new
JSONObject
().
put
(
"bcc"
,
request
.
getBcc
()),
"bcc"
));
}
message
.
setSubject
(
request
.
getSubject
());
MimeBodyPart
texto
=
new
MimeBodyPart
();
texto
.
setContent
(
request
.
getBody
(),
"text/html; charset=utf-8"
);
MimeMultipart
multiParte
=
new
MimeMultipart
();
multiParte
.
addBodyPart
(
texto
);
try
{
String
file_folder
=
""
;
MultipartFile
[]
files
=
request
.
getFiles
();
for
(
MultipartFile
file
:
files
)
{
BodyPart
adjunto
=
new
MimeBodyPart
();
String
fileName
=
file
.
getOriginalFilename
();
convertByteArrayToFile
(
file
.
getBytes
(),
fileName
,
file_folder
);
FileDataSource
fds
=
new
FileDataSource
(
file_folder
+
"/"
+
fileName
);
adjunto
.
setDataHandler
(
new
DataHandler
(
fds
));
adjunto
.
setFileName
(
fds
.
getName
());
multiParte
.
addBodyPart
(
adjunto
);
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
e
.
getMessage
());
}
message
.
setContent
(
multiParte
);
return
message
;
}
catch
(
MessagingException
e
)
{
System
.
out
.
println
(
e
.
getMessage
());
return
null
;
}
}
public
void
convertByteArrayToFile
(
byte
[]
byteArray
,
String
fileName
,
String
file_folder
){
try
(
FileOutputStream
fos
=
new
FileOutputStream
(
file_folder
+
"/"
+
fileName
))
{
fos
.
write
(
byteArray
);
}
catch
(
Exception
e
){
System
.
out
.
println
(
e
.
getMessage
());
}
}
public
JSONObject
send
(
MimeMessage
email
)
{
try
{
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
email
.
writeTo
(
baos
);
String
encodedEmail
=
Base64
.
encodeBase64URLSafeString
(
baos
.
toByteArray
());
Message
message
=
new
Message
();
message
.
setRaw
(
encodedEmail
);
System
.
out
.
println
(
googleConfig
.
getGmail
().
users
().
messages
().
send
(
"me"
,
message
).
execute
());
return
new
JSONObject
().
put
(
"message"
,
"Email enviado correctamente"
).
put
(
"status"
,
true
);
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
e
.
getMessage
());
return
new
JSONObject
().
put
(
"message"
,
e
.
getMessage
()).
put
(
"status"
,
false
);
}
}
public
InternetAddress
[]
buildRecipients
(
JSONObject
json
,
String
type
)
{
String
[]
recipients
=
json
.
optString
(
type
).
split
(
","
);
InternetAddress
[]
addresses
=
new
InternetAddress
[
recipients
.
length
];
Stream
.
of
(
recipients
).
map
(
recipient
->
{
try
{
return
new
InternetAddress
(
recipient
);
}
catch
(
AddressException
e
)
{
System
.
out
.
println
(
e
.
getMessage
());
return
null
;
}
}).
filter
(
Objects:
:
nonNull
).
collect
(
Collectors
.
toList
()).
toArray
(
addresses
);
return
addresses
;
}
}
\ No newline at end of file
src/main/java/web/multitask/trismegistoservices/singleton/ThreadLocalSingleton.java
0 → 100644
View file @
bcc3c3a5
package
web
.
multitask
.
trismegistoservices
.
singleton
;
import
org.springframework.jdbc.core.JdbcTemplate
;
import
org.springframework.stereotype.Component
;
@Component
public
class
ThreadLocalSingleton
{
private
final
ThreadLocal
<
JdbcTemplate
>
jdbcTemplateThreadLocal
=
new
ThreadLocal
<>();
public
void
setJdbcTemplate
(
JdbcTemplate
jdbcTemplate
)
{
jdbcTemplateThreadLocal
.
set
(
jdbcTemplate
);
}
public
JdbcTemplate
getJdbcTemplate
()
{
JdbcTemplate
jdbcTemplate
=
jdbcTemplateThreadLocal
.
get
();
if
(
jdbcTemplate
==
null
)
{
jdbcTemplate
=
new
JdbcTemplate
();
jdbcTemplateThreadLocal
.
set
(
jdbcTemplate
);
}
return
jdbcTemplate
;
}
}
src/main/java/web/multitask/trismegistoservices/singleton/TokenSingleton.java
0 → 100644
View file @
bcc3c3a5
package
web
.
multitask
.
trismegistoservices
.
singleton
;
import
lombok.Getter
;
import
org.json.JSONArray
;
import
org.json.JSONObject
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
java.util.stream.IntStream
;
@Getter
@Component
public
class
TokenSingleton
{
private
final
JSONArray
tokens
=
new
JSONArray
();
public
boolean
consumeToken
(
String
token
)
{
boolean
isAvailable
=
false
;
for
(
int
i
=
0
;
i
<
tokens
.
length
();
i
++)
{
if
(
tokens
.
getJSONObject
(
i
).
getString
(
"token"
).
equals
(
token
))
{
if
(
tokens
.
getJSONObject
(
i
).
getBoolean
(
"available"
))
{
tokens
.
getJSONObject
(
i
).
put
(
"available"
,
false
);
isAvailable
=
true
;
}
break
;
}
}
return
isAvailable
;
}
public
void
addToken
(
String
token
)
{
tokens
.
put
(
new
JSONObject
().
put
(
"token"
,
token
).
put
(
"available"
,
true
));
}
public
TokenSingleton
()
{
}
@Scheduled
(
fixedRate
=
3600000
)
public
void
removeUnavailableTokens
()
{
System
.
out
.
println
(
"Removing unavailable tokens"
);
IntStream
.
range
(
0
,
tokens
.
length
()).
forEach
(
i
->
{
if
(!
tokens
.
getJSONObject
(
i
).
getBoolean
(
"available"
))
{
tokens
.
remove
(
i
);
}
});
}
}
src/main/java/web/multitask/trismegistoservices/utils/CommonUtils.java
View file @
bcc3c3a5
...
...
@@ -70,4 +70,28 @@ public class CommonUtils {
}
};
}
public
boolean
deleteAllFiles
()
{
try
{
String
tmpFolder
=
System
.
getProperty
(
"java.io.tmpdir"
);
File
folder
=
new
File
(
tmpFolder
);
if
(!
folder
.
exists
()
||
!
folder
.
isDirectory
())
{
return
false
;
}
File
[]
files
=
folder
.
listFiles
();
if
(
files
!=
null
)
{
for
(
File
file
:
files
)
{
if
(
file
.
isFile
())
{
if
(!
file
.
delete
())
{
System
.
err
.
println
(
"Failed to delete file: "
+
file
.
getAbsolutePath
());
}
}
}
}
return
true
;
}
catch
(
SecurityException
e
)
{
System
.
err
.
println
(
"Security exception occurred: "
+
e
.
getMessage
());
return
false
;
}
}
}
\ No newline at end of file
src/main/java/web/multitask/trismegistoservices/utils/JWTokenUtil.java
View file @
bcc3c3a5
...
...
@@ -4,6 +4,7 @@ import java.io.Serializable;
import
java.math.BigInteger
;
import
java.util.Date
;
import
io.jsonwebtoken.ExpiredJwtException
;
import
org.json.JSONObject
;
import
org.springframework.beans.factory.annotation.Value
;
...
...
@@ -17,6 +18,7 @@ public class JWTokenUtil implements Serializable{
@Value
(
"${app.jwtSecret}"
)
private
String
jwtSecret
;
public
String
generateToken
(
User
user
,
BigInteger
ms
)
{
if
(
ms
==
null
){
ms
=
BigInteger
.
valueOf
(
3600000
);
...
...
@@ -33,6 +35,15 @@ public class JWTokenUtil implements Serializable{
.
compact
();
}
public
String
generateDataSource
(
JSONObject
json
){
return
Jwts
.
builder
()
.
setSubject
(
json
.
toString
())
.
setIssuedAt
(
new
Date
())
.
setExpiration
(
new
Date
(
new
Date
().
getTime
()
+
36000000
))
.
signWith
(
Keys
.
hmacShaKeyFor
(
jwtSecret
.
getBytes
()))
.
compact
();
}
public
boolean
validateToken
(
String
token
)
{
try
{
Jwts
.
parserBuilder
()
...
...
@@ -52,7 +63,9 @@ public class JWTokenUtil implements Serializable{
.
build
()
.
parseClaimsJws
(
token
)
.
getBody
().
getSubject
();
}
catch
(
Exception
e
){
}
catch
(
ExpiredJwtException
expiredJwtException
)
{
return
expiredJwtException
.
getClaims
().
getSubject
();
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
e
.
getMessage
());
return
null
;
}
...
...
src/main/resources/application.properties
View file @
bcc3c3a5
...
...
@@ -2,12 +2,11 @@ spring.datasource.url=jdbc:mysql://172.16.1.32:3306/seguridad
spring.datasource.username
=
desarrollo
spring.datasource.password
=
5vC0$2019$
spring.datasource.driverClassName
=
com.mysql.cj.jdbc.Driver
server.port
=
8081
server.address
=
0.0.0.0
server.port
=
8081
server.address
=
0.0.0.0
# spring.jpa.show-sql=true
app.jwtSecret
=
9a4f2c8d3b7a1e6f45c8a0b3f267d8b1d4e6f3c8a9d2b5f8e3a9c8b5f6v8a3d9
spring.jpa.hibernate.ddl-auto
=
update
spring.jpa.hibernate.ddl-auto
=
update
spring.security.filter.order
=
1
spring.servlet.multipart.max-file-size
=
100MB
spring.servlet.multipart.max-request-size
=
100MB
\ No newline at end of file
src/main/resources/tokens/oAuth2.json
0 → 100644
View file @
bcc3c3a5
{
"web"
:
{
"client_id"
:
"783525806421-34sgkcpfctk7d55mbs7j9v2ktlqeants.apps.googleusercontent.com"
,
"project_id"
:
"trimegisto-planilla"
,
"auth_uri"
:
"https://accounts.google.com/o/oauth2/auth"
,
"token_uri"
:
"https://oauth2.googleapis.com/token"
,
"auth_provider_x509_cert_url"
:
"https://www.googleapis.com/oauth2/v1/certs"
,
"client_secret"
:
"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"
,
"redirect_uris"
:
[
"http://localhost:8081"
],
"gmail_refresh_token"
:
"1//0h1Vav6bFY6CNCgYIARAAGBESNwF-L9IrsBAFQpLDY9ct5JLIjRoybv-rl3fWXmzbP1lKMqfOD2B0EYFBPNtaBpo6QcHB5hh4wBA"
,
"drive_refresh_token"
:
"1//05uUWOcbm9wDzCgYIARAAGAUSNwF-L9IrWjCmPvmc5aSwcJzRfWYClp4Vr9NEXbdaFCBbbbkmpBi3zuaPoXJc0lr21Ql2dH0Jrdc"
}
}
\ No newline at end of file
src/main/resources/tokens/serviceAccount.json
0 → 100644
View file @
bcc3c3a5
{
"type"
:
"service_account"
,
"project_id"
:
"trimegisto-planilla"
,
"private_key_id"
:
"ec3ed783ba6ce35de0367caacbff70b35baa4d8e"
,
"private_key"
:
"-----BEGIN PRIVATE KEY-----
\n
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYi4NVOq7o5axq
\n
XpfiHaMUhpfDfty56AkzjD3mf9phPar3OsCtudKjNFt4S5i3IhBRXq8ytfV0h5F5
\n
FF+cNOZKacTCv66vT3hUS2qvWdlsm+0LKZEGWXMBRAJfQUroCxQP37jd7am+rFCA
\n
ioGRR2+n3a++HRa/y1olV2uY3rJFd35yFCi1oS9ObjxzFCWM2kHemM1XBjUWDbFf
\n
ynC/PEj1lv1ASVIO5wr9iL6ZXlLItmewmWd1ZvLfV9dcpvZSOhK1AaPIy1CQcSkh
\n
y6ul5c6TPK7XZEMs23kSy7mSKitTVQrnzu1qn0szxVqYyI8eqVbfgsoXShaf4kWh
\n
vsyo9kzBAgMBAAECggEAIXRkZO19ClQ5b/GPS4rCoDAvEC/wT/RuP32CLrM//Nf3
\n
Ktzz2aMkzLwRCaO8Q0bK+JdFP/NmqYssSWWBY/O0RHjUwjW0+jav424HXHHoKmRo
\n
mdnhIvb80ow8RZUjynezsMQinn7SQ7gBc+pyHAzKTkfsl9WMpzL2iWBZKjP1nM+R
\n
hAJXYTKPdPX4aOEo/CldvoU23lfxhhMM8aCcKWb9kpu/W5qdInhh8FnJZdRk+Ad3
\n
ziJQRJvzLGCvxbCjYwNQbybjMFH3vJQp/jvcA9JluxQQfFfqCZd7bON+r+aDFALR
\n
Ly/TFAwtLcB6ggXx2Gm//1QIdwWImFoFaoFcceSxxQKBgQDsfeoqs1tsNFw76l/O
\n
UkxIp8wqwxgvbmxA9bshZE4xiE76HOWJ3SVCPCmW984hVzwzh85vcdWQeHakrorG
\n
J5d8HnR83/MItiJRB9GD8o8HuhRkEjGYymgtzCuln2HmNJrUfkoYF8QLEN3ctQrd
\n
49vxKjs8hMlsScqSfjjFXPU56wKBgQDqaF9oSfqz6xT56dS7n4ehLZ9Q/2qmaOL5
\n
gxOwfu4388IvZswpJ/v6Pieps5IYMv1bFNc/I7+1x7IKI/K+7bVWblEEpQEJdqQj
\n
QradiCTASaafKGbq+ObqyG9kSm/NT7r3VCDhDwNe1TchL5tPOFWxVJfIwrgY9Nw2
\n
ZlRSTtUdAwKBgFNDWcjC8TM9lCO8NxMLQrRp76Y2njNE63RLkCEHkcg6t6OzvNU3
\n
OUECsZnnkXmHnzh9Xh86svh0kUEV+uIdWmZmypiUuJqelaJ14DxWkCkmSLua9D9Z
\n
NCi7s7pSTUOhzcl21Vt6Mpm6zIJCc5r/+JYGSmjaT5iCuoGtUwuZ2PUVAoGBANRu
\n
rHA2A0cEd+kY+Zrjs6XlU6mzH/MZwQFAwhpEnh0FAum0breprdkWdRl9TJwzsZnW
\n
pE9rVXUnOfmopHhVsu5WYYQlCXCLHat67UaMuEmvNZqtob+2vIbwCMtKDlJxvE4i
\n
5v0vfu11q1We8FB2DGr97+SYWwD6/4spZ6eEG+0DAoGARXQLveeSo4OVpbg29eQ9
\n
0bPOfYKjF7vNAGf0yDB19fgrQmz/MxaN0KKfIqXb91kFL2TZg9ekwNwN42cH0TJU
\n
lvIXfOjF4oXcCC1x2b5J7a3FlLrYGJZXiWapF0rg9KtvsfnEFwfucwvfWG6tOYh9
\n
3UgwfMV9qHCMRN1tvfbzXJo=
\n
-----END PRIVATE KEY-----
\n
"
,
"client_email"
:
"tp-services@trimegisto-planilla.iam.gserviceaccount.com"
,
"client_id"
:
"109307993437397271961"
,
"auth_uri"
:
"https://accounts.google.com/o/oauth2/auth"
,
"token_uri"
:
"https://oauth2.googleapis.com/token"
,
"auth_provider_x509_cert_url"
:
"https://www.googleapis.com/oauth2/v1/certs"
,
"client_x509_cert_url"
:
"https://www.googleapis.com/robot/v1/metadata/x509/tp-services%40trimegisto-planilla.iam.gserviceaccount.com"
,
"universe_domain"
:
"googleapis.com"
}
\ No newline at end of file
src/main/resources/tokens/trimegistro-mongo-3e687dba9acb.json
deleted
100644 → 0
View file @
4020f7a1
{
"type"
:
"service_account"
,
"project_id"
:
"trimegistro-mongo"
,
"private_key_id"
:
"3e687dba9acbe6cfdf2b0ea5dbdac21de0f1c040"
,
"private_key"
:
"-----BEGIN PRIVATE KEY-----
\n
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDQfiCmdlpaJd7f
\n
Nohbvnun3CbfVOy+dUuUOTYWGOAnyAh/ARQ6XC3+Ceplg7uc3XiKQYMPl+dKAv2G
\n
bIcpwb4BIz6rpknd1AM5I1ObJcwmxHblsKLUq55Ixkjke5IQYWvBkwdNENORZMgP
\n
WTuj1x9HGhCynWZCimFXsKvsJnWwlTkFAZJWwXtJDt6m0TqCH/aGKrH2C5pZvQyd
\n
lZHlQF3dlQ1PlOVB4stD0tKSXtU6dxrZzTv8os+uwfZel6lF+90TkE2DfOT0bWxD
\n
+7GVqWPTtrY6TvCOaucGSR08cnncqA030/X7MORuyXp4tmmWNK4iFdacPOdA/X1k
\n
CVe4Pv7TAgMBAAECggEAL1yPfzEAilzy+YLSTAED5xhgLjiFBSjxD81FR5TECtVq
\n
dKtilHVPL1fCSug3bMV0tfd21cp8jHgMboZl1+r+hhSjDmwaeI1KZCbtvZ9C9oWH
\n
utq6ypPnw4Fjmp+liRoQV+tV68BIR019EtuC7E+Yd9bodyLBUZlMzpZAH8eG0aNT
\n
UYYvxbJvHKGr7/YSM+k5Uhngw9rDoVFHJsBywQ0NmU4/VJxEB5M5V4jmnUn4OXaY
\n
nt+NhmEa7NJCsB6ASnYdxxojJBFzCwt3YqHQk9kBhB2SnoUyx4YZXXYphJnFpI/0
\n
atzChjWSbdQKX3pwKiVQ9nXgIWTgPZtW98E5FQ6eVQKBgQDr9Z8WTYawWvpNnx3L
\n
YRGAyQVqa7mvxonHaxiRWCt6DzMRn/gzt0fup8NnW+82EobHuwpmq4GegVHQ8a/Y
\n
tCMD98bnlF/ZQADIMEisjES2OJrliOAZok2h+xAAIZ/NjJQSAanY6ylJPus7TDjq
\n
olRc6yisE4EJjk8KMC440yaPhQKBgQDiM05pgEwad5+TKPltFUmOrO9xNb4lWShy
\n
OTXHGbpeld83c6zP4JQoKauy4XrDpXPpr4czWAOnQtxS4lcA1HS47od94k9MTN9C
\n
dtiLqJSWaCpBaKw7POJimiKzFKCllWRYbqhf2dpsG2fnKFls9LpN7xyU4Dmh71IK
\n
FYLOhIeodwKBgCk1zsEgbSOj4A9qeNOqclohwbZidh3C+RFBHRtVYNKCkRLE855k
\n
pkWCO1hz8AVrmuqLOjfQQGUkhNuPOn0IiQ0KW0za1xqkWP6doDOyk9WXcUYhb7JK
\n
bHCb3qGHPdeyc7HpZHakK6PFP2Qt3crs6vsHfyT+iwzWM+u9mnUGO7fZAoGBAKJ4
\n
2ax7w64LGCpadvW8IY6CdqXpRT+MT7njj9YHi87edWteAdV6aNCERdiBjm0yzRQf
\n
yMu/PziHlLtP6dAlygT/B4EK6YxTdtVFifqeRsPV4+wBZBxUegL61Uut2Em3CVFf
\n
gj7+up2F/daSK9FP4vWRdwUUHTFMNbAajU8K8Gm3AoGAN39pkgWds/2n8QWNG6xg
\n
7fgvNdKlOChYzEwfKYSsBWSJYVbycxZwYf2Z56DFs8k5Gkq1TmUP5wZJEXgQEgQL
\n
SyBZpYeidMJTZeBAdoQP/YcD/BbbrZERBEB7AOFkqio4tZvsQ+P+05D8EZFaxfWL
\n
+n6qKIWmY/pmTz1UMq38Z44=
\n
-----END PRIVATE KEY-----
\n
"
,
"client_email"
:
"drive-full-service@trimegistro-mongo.iam.gserviceaccount.com"
,
"client_id"
:
"112792567782824987338"
,
"auth_uri"
:
"https://accounts.google.com/o/oauth2/auth"
,
"token_uri"
:
"https://oauth2.googleapis.com/token"
,
"auth_provider_x509_cert_url"
:
"https://www.googleapis.com/oauth2/v1/certs"
,
"client_x509_cert_url"
:
"https://www.googleapis.com/robot/v1/metadata/x509/drive-full-service%40trimegistro-mongo.iam.gserviceaccount.com"
,
"universe_domain"
:
"googleapis.com"
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment