[FIXED] YA NO SE REQUIERE DOTENV NI BASE DE DATOS PARA QUE FUNCIONE…

[FIXED] YA NO SE REQUIERE DOTENV NI BASE DE DATOS PARA QUE FUNCIONE COMPLETAMENTE INDEPENDIENTE Y GENERAL
parent bcc3c3a5
......@@ -56,11 +56,11 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.5.6</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-data-jpa</artifactId>-->
<!-- <version>2.5.6</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
......
......@@ -12,7 +12,7 @@
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.mysql.EmailMysql;
import web.multitask.trismegistoservices.services.google.GmailService;
......@@ -20,9 +20,9 @@
@RequestMapping("/gmail")
@AllArgsConstructor
public class EmailApi {
private final Dotenv dotenv;
// private final Dotenv dotenv;
private final GmailService emailService;
private final EmailMysql emailMysql;
// private final EmailMysql emailMysql;
@RequestMapping(path = "/public/generate", method = RequestMethod.POST, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
public ResponseEntity<?> full(@ModelAttribute GmailRequest request) {
......@@ -35,28 +35,28 @@
}
}
@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());
}
}
// @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
......@@ -7,7 +7,7 @@ import org.springframework.http.ResponseEntity;
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.repository.UserRepository;
import web.multitask.trismegistoservices.singleton.TokenSingleton;
import web.multitask.trismegistoservices.utils.JWTokenUtil;
......@@ -21,13 +21,19 @@ import org.springframework.web.bind.annotation.RequestBody;
@RestController
@RequestMapping("/token")
@CrossOrigin
@AllArgsConstructor
//@AllArgsConstructor
class JWTokenApi {
private final UserRepository userRepo = new UserRepository();
private final JWTokenUtil jwtTokenUtil;
private final UserRespository userRepo;
private final TokenSingleton tokenSingleton;
public JWTokenApi (JWTokenUtil jwtTokenUtil, TokenSingleton tokenSingleton){
this.jwtTokenUtil = jwtTokenUtil;
this.tokenSingleton = tokenSingleton;
}
@PostMapping("/database")
public ResponseEntity<?> setDatabase(@RequestBody String token) {
JSONObject json = new JSONObject(token);
......
......@@ -6,7 +6,7 @@ import org.json.JSONObject;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import web.multitask.trismegistoservices.mysql.RoutineSql;
import web.multitask.trismegistoservices.repository.UserRespository;
import web.multitask.trismegistoservices.repository.UserRepository;
@RestController
@CrossOrigin("*")
......@@ -15,7 +15,6 @@ import web.multitask.trismegistoservices.repository.UserRespository;
public class RoutineApi {
final RoutineSql procedureMysql;
final UserRespository userRepo;
@PostMapping("/public/routine")
public ResponseEntity<?> callRoutine(@RequestBody String body) {
......@@ -37,9 +36,4 @@ public class RoutineApi {
}
}
@GetMapping("/private/users")
public ResponseEntity<?> getUsers() {
return ResponseEntity.ok(new JSONObject().put("data", userRepo.findAll()).put("message", "Success").put("status", true).toMap());
}
}
\ No newline at end of file
......@@ -18,7 +18,7 @@ import org.springframework.web.cors.CorsConfiguration;
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.repository.UserRepository;
import web.multitask.trismegistoservices.singleton.ThreadLocalSingleton;
import web.multitask.trismegistoservices.singleton.TokenSingleton;
import web.multitask.trismegistoservices.utils.JWTokenUtil;
......@@ -28,7 +28,7 @@ import web.multitask.trismegistoservices.utils.JWTokenUtil;
@AllArgsConstructor
public class SecurityConfig{
private final UserRespository userRepo;
// private final UserRepository userRepo;
private final JWTokenUtil jwtTokenUtil;
private final TokenSingleton tokenSingleton;
private ThreadLocalSingleton threadLocalSingleton;
......@@ -51,7 +51,7 @@ public class SecurityConfig{
.regexMatchers(".*/service/.*").hasAnyAuthority("ADMIN", "SERVICE")
.antMatchers(HttpMethod.GET, "/**").permitAll()
.antMatchers("/token/**").permitAll());
http.addFilterBefore(new JWTokenFilter(jwtTokenUtil, userRepo, tokenSingleton,threadLocalSingleton), UsernamePasswordAuthenticationFilter.class);
http.addFilterBefore(new JWTokenFilter(jwtTokenUtil, tokenSingleton,threadLocalSingleton), UsernamePasswordAuthenticationFilter.class);
return http.build();
}
......
......@@ -12,7 +12,7 @@ import org.springframework.security.authentication.UsernamePasswordAuthenticatio
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap;
import web.multitask.trismegistoservices.repository.UserRespository;
import web.multitask.trismegistoservices.repository.UserRepository;
import web.multitask.trismegistoservices.utils.JWTokenUtil;
import java.util.Objects;
......@@ -20,11 +20,10 @@ import java.util.Objects;
public class AuthChannelInterceptorAdapter implements ChannelInterceptor {
private final JWTokenUtil jwtTokenUtil;
private final UserRespository userRepo;
private final UserRepository userRepo = new UserRepository();
public AuthChannelInterceptorAdapter(JWTokenUtil jwtTokenUtil, UserRespository userRepo) {
public AuthChannelInterceptorAdapter(JWTokenUtil jwtTokenUtil) {
this.jwtTokenUtil = jwtTokenUtil;
this.userRepo = userRepo;
}
@Override
......
......@@ -16,27 +16,38 @@ 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.User;
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.repository.UserRepository;
import web.multitask.trismegistoservices.singleton.ThreadLocalSingleton;
import web.multitask.trismegistoservices.singleton.TokenSingleton;
import web.multitask.trismegistoservices.utils.JWTokenUtil;
@Component
@Order(1)
@AllArgsConstructor
@NoArgsConstructor
//@AllArgsConstructor
//@NoArgsConstructor
public class JWTokenFilter extends OncePerRequestFilter {
public JWTokenFilter(){}
private final UserRepository userRepo = new UserRepository();
private JWTokenUtil jwtTokenUtil = null;
private UserRespository userRepo = null;
private TokenSingleton tokenSingleton = null;
private ThreadLocalSingleton threadLocalSingleton = null;
public JWTokenFilter(JWTokenUtil jwtTokenUtil, TokenSingleton tokenSingleton, ThreadLocalSingleton threadLocalSingleton){
this.jwtTokenUtil = jwtTokenUtil;
this.tokenSingleton = tokenSingleton;
this.threadLocalSingleton = threadLocalSingleton;
}
@Override
protected void doFilterInternal(HttpServletRequest request, @NotNull HttpServletResponse response, @NotNull FilterChain chain)
throws ServletException, IOException, java.io.IOException {
......
package web.multitask.trismegistoservices.model;
import javax.persistence.*;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.Setter;
import lombok.*;
@Data
//@Data
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Entity(name = "roles")
//@Entity(name = "roles")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
// @Id
// @GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@NonNull
// @NonNull
private String descripcion;
}
\ No newline at end of file
package web.multitask.trismegistoservices.model;
import javax.persistence.*;
import lombok.*;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
......@@ -9,26 +8,26 @@ import org.springframework.security.core.userdetails.UserDetails;
import java.util.Collection;
import java.util.List;
@Data
//@Data
@NoArgsConstructor
@Getter
@Setter
@Entity(name = "users")
//@Entity(name = "users")
public class User implements UserDetails {
@Id
@GeneratedValue(strategy = javax.persistence.GenerationType.IDENTITY)
// @Id
// @GeneratedValue(strategy = javax.persistence.GenerationType.IDENTITY)
private Long id;
@NonNull
// @NonNull
private String username;
@NonNull
// @NonNull
private String password;
@ManyToMany(fetch = javax.persistence.FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "user_roles",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name="role_id"))
// @ManyToMany(fetch = javax.persistence.FetchType.EAGER, cascade = CascadeType.ALL)
// @JoinTable(name = "user_roles",
// joinColumns = @JoinColumn(name = "user_id"),
// inverseJoinColumns = @JoinColumn(name="role_id"))
private java.util.Set<Role> roles = new java.util.HashSet<>();
@Override
......
package web.multitask.trismegistoservices.mysql;
import org.json.JSONObject;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class EmailMysql {
private final JdbcTemplate jdbcTemplate;
public EmailMysql(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public JSONObject getHTMLTemplate (JSONObject json) {
String id = json.optString("id",null);
if(id == null){
return new JSONObject().put("message", "Invalid Request").put("status", false);
}
String sql = "SELECT * FROM security.email_template WHERE id = ?";
Object[] params = new Object[] { id };
try{
List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql, params);
return new JSONObject().put("data", rows).put("message", "Success").put("status", true);
}catch (Exception e){
return new JSONObject().put("message", e.getMessage()).put("status", false);
}
}
}
\ No newline at end of file
//package web.multitask.trismegistoservices.mysql;
//
//import org.json.JSONObject;
//import org.springframework.jdbc.core.JdbcTemplate;
//import org.springframework.stereotype.Service;
//
//import java.util.List;
//import java.util.Map;
//
//@Service
//public class EmailMysql {
//
// private final JdbcTemplate jdbcTemplate;
//
// public EmailMysql(JdbcTemplate jdbcTemplate) {
// this.jdbcTemplate = jdbcTemplate;
// }
//
// public JSONObject getHTMLTemplate (JSONObject json) {
// String id = json.optString("id",null);
// if(id == null){
// return new JSONObject().put("message", "Invalid Request").put("status", false);
// }
// String sql = "SELECT * FROM security.email_template WHERE id = ?";
// Object[] params = new Object[] { id };
// try{
// List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql, params);
// return new JSONObject().put("data", rows).put("message", "Success").put("status", true);
// }catch (Exception e){
// return new JSONObject().put("message", e.getMessage()).put("status", false);
// }
// }
//}
\ No newline at end of file
package web.multitask.trismegistoservices.repository;
//@Repository
//public interface UserRepository extends JpaRepository<User, Long> {
//
// UserDetails findByUsername(String username)
// throws UsernameNotFoundException;
//
//}
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.security.core.userdetails.UserDetails;
import web.multitask.trismegistoservices.model.Role;
import web.multitask.trismegistoservices.model.User;
import java.util.*;
public class UserRepository{
private final HashMap<String, User> users = new HashMap<>();
Set<Role> roles = new HashSet<>();
public UserRepository(){
roles.add(new Role(1, "ADMIN"));
roles.add(new Role(2, "USER"));
roles.add(new Role(3, "SERVICE"));
User user = new User();
user.setUsername("admin");
user.setId(1L);
user.setPassword("admin");
user.setRoles(roles);
users.put("admin", user);
}
public UserDetails findByUsername(String username){
return users.get(username);
}
public static void main(String[] args) {
UserRepository userRepository = new UserRepository();
System.out.println(userRepository.findByUsername("admin").getAuthorities());
}
}
\ No newline at end of file
package web.multitask.trismegistoservices.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import web.multitask.trismegistoservices.model.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRespository extends JpaRepository<User, Long> {
UserDetails findByUsername(String username)
throws UsernameNotFoundException;
}
\ No newline at end of file
......@@ -20,6 +20,8 @@ import web.multitask.trismegistoservices.config.GoogleConfig;
import web.multitask.trismegistoservices.interfaces.IDriveService;
import web.multitask.trismegistoservices.utils.CommonUtils;
import javax.annotation.Nullable;
@Service
@AllArgsConstructor
public class DriveService implements IDriveService {
......@@ -28,12 +30,13 @@ public class DriveService implements IDriveService {
private final CommonUtils commonUtils;
@Override
public String uploadFile(String folder_id, String file_name, MultipartFile file, String base64) {
public String uploadFile(String folder_id, @Nullable String file_name, MultipartFile file, String base64) {
try {
if (null != file) {
File fileMetadata = new File();
fileMetadata.setParents(Collections.singletonList(folder_id));
fileMetadata.setName(file.getOriginalFilename());
assert file_name != null;
fileMetadata.setName( file_name.isEmpty() ? file.getOriginalFilename() : file_name);
File uploadFile = googleConfig.getDrive()
.files()
.create(fileMetadata, new InputStreamContent(
......
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
#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
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
server.port=8080
server.address=0.0.0.0
# spring.jpa.show-sql=true
app.jwtSecret=9a4f2c8d3b7a1e6f45c8a0b3f267d8b1d4e6f3c8a9d2b5f8e3a9c8b5f6v8a3d9
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment