Skip to content

Commit 8dc8ba5

Browse files
indraniBanIndrani BandyopadhyayIN40068837
authored
jwt api implementation (#110)
* jwt api implementation * Formatting and dependency upgrade * changes by coderabbit comments * fixed issues * use fetch from redis concept * user fetch concept modify --------- Co-authored-by: Indrani Bandyopadhyay <IN40068837@wipro.com> Co-authored-by: IN40068837 <IN40068837@L-156289031.wipro.com>
1 parent a70fa30 commit 8dc8ba5

15 files changed

Lines changed: 436 additions & 21 deletions

pom.xml

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,7 @@
125125
<version>1.5.5.Final</version>
126126
</dependency>
127127

128-
<!--
129-
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa -->
128+
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa -->
130129
<dependency>
131130
<groupId>org.springframework.boot</groupId>
132131
<artifactId>spring-boot-starter-data-jpa</artifactId>
@@ -197,14 +196,12 @@
197196
<artifactId>spring-boot-starter-mail</artifactId>
198197
</dependency>
199198

200-
<!--
201-
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
199+
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
202200
<dependency>
203201
<groupId>org.springframework.boot</groupId>
204202
<artifactId>spring-boot-starter-data-redis</artifactId>
205203
</dependency>
206-
<!--
207-
https://mvnrepository.com/artifact/org.springframework.session/spring-session-data-redis -->
204+
<!-- https://mvnrepository.com/artifact/org.springframework.session/spring-session-data-redis -->
208205
<dependency>
209206
<groupId>org.springframework.session</groupId>
210207
<artifactId>spring-session-data-redis</artifactId>
@@ -225,24 +222,21 @@
225222
<version>7.0.0</version>
226223
</dependency>
227224

228-
<!--
229-
https://mvnrepository.com/artifact/ca.uhn.hapi.fhir/hapi-fhir-structures-r4 -->
225+
<!-- https://mvnrepository.com/artifact/ca.uhn.hapi.fhir/hapi-fhir-structures-r4 -->
230226
<dependency>
231227
<groupId>ca.uhn.hapi.fhir</groupId>
232228
<artifactId>hapi-fhir-structures-r4</artifactId>
233229
<version>7.0.0</version>
234230
</dependency>
235231

236-
<!--
237-
https://mvnrepository.com/artifact/ca.uhn.hapi.fhir/hapi-fhir-server -->
232+
<!-- https://mvnrepository.com/artifact/ca.uhn.hapi.fhir/hapi-fhir-server -->
238233
<dependency>
239234
<groupId>ca.uhn.hapi.fhir</groupId>
240235
<artifactId>hapi-fhir-server</artifactId>
241236
<version>7.0.0</version>
242237
</dependency>
243238

244-
<!--
245-
https://mvnrepository.com/artifact/ca.uhn.hapi.fhir/hapi-fhir-validation -->
239+
<!-- https://mvnrepository.com/artifact/ca.uhn.hapi.fhir/hapi-fhir-validation -->
246240
<dependency>
247241
<groupId>ca.uhn.hapi.fhir</groupId>
248242
<artifactId>hapi-fhir-validation</artifactId>
@@ -255,8 +249,7 @@
255249
</exclusions>
256250
</dependency>
257251

258-
<!--
259-
https://mvnrepository.com/artifact/ca.uhn.hapi.fhir/hapi-fhir-validation-resources-r4 -->
252+
<!-- https://mvnrepository.com/artifact/ca.uhn.hapi.fhir/hapi-fhir-validation-resources-r4 -->
260253
<dependency>
261254
<groupId>ca.uhn.hapi.fhir</groupId>
262255
<artifactId>hapi-fhir-validation-resources-r4</artifactId>
@@ -278,6 +271,26 @@
278271
<artifactId>spring-web</artifactId>
279272
<version>6.1.12</version>
280273
</dependency>
274+
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-api -->
275+
<dependency>
276+
<groupId>io.jsonwebtoken</groupId>
277+
<artifactId>jjwt-api</artifactId>
278+
<version>0.12.6</version>
279+
</dependency>
280+
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-impl -->
281+
<dependency>
282+
<groupId>io.jsonwebtoken</groupId>
283+
<artifactId>jjwt-impl</artifactId>
284+
<version>0.12.6</version>
285+
<scope>runtime</scope>
286+
</dependency>
287+
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-jackson -->
288+
<dependency>
289+
<groupId>io.jsonwebtoken</groupId>
290+
<artifactId>jjwt-jackson</artifactId>
291+
<version>0.12.6</version>
292+
<scope>runtime</scope>
293+
</dependency>
281294
</dependencies>
282295

283296

@@ -370,8 +383,7 @@
370383
${target-properties} and
371384
${source-properties}
372385
</echo>
373-
<concat destfile="${target-properties}"
374-
append="yes"
386+
<concat destfile="${target-properties}" append="yes"
375387
force="yes">
376388
<fileset file="${source-properties}">
377389
</fileset>

src/main/environment/common_ci.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ prescription=TMPrescription SMS
8686

8787
### Redis IP
8888
spring.redis.host=localhost
89+
jwt.secret=@env.JWT_SECRET_KEY@
90+
8991

9092
#ELK logging file name
91-
logging.file.name=@env.HWC_API_LOGGING_FILE_NAME@
93+
logging.file.name=@env.HWC_API_LOGGING_FILE_NAME@
94+

src/main/environment/common_dev.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ prescription=TMPrescription SMS
8686

8787
### Redis IP
8888
spring.redis.host=localhost
89+
jwt.secret=
8990

9091

9192

src/main/environment/common_example.properties

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@ prescription=TMPrescription SMS
8787

8888
### Redis IP
8989
spring.redis.host=localhost
90+
91+
jwt.secret=
92+
93+
9094
spring.redis.port=6379
9195

9296

97+

src/main/environment/common_prod.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ prescription=TMPrescription SMS
8888

8989
### Redis IP
9090
spring.redis.host=localhost
91+
jwt.secret=
9192

9293

9394

src/main/environment/common_test.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ prescription=TMPrescription SMS
9090

9191
### Redis IP
9292
spring.redis.host=localhost
93+
jwt.secret=
9394

9495

9596

src/main/environment/common_uat.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ prescription=TMPrescription SMS
9090

9191
### Redis IP
9292
spring.redis.host=localhost
93+
jwt.secret=
9394

9495

9596

src/main/java/com/iemr/hwc/Application.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,13 @@
3232
import org.springframework.context.annotation.ComponentScan;
3333
import org.springframework.context.annotation.Configuration;
3434
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
35+
import org.springframework.data.redis.connection.RedisConnectionFactory;
36+
import org.springframework.data.redis.core.RedisTemplate;
37+
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
38+
import org.springframework.data.redis.serializer.StringRedisSerializer;
3539
import org.springframework.web.client.RestTemplate;
3640

41+
import com.iemr.hwc.data.login.Users;
3742
import com.iemr.hwc.fhir.config.fhirRestfulServer.FhirRestfulServer;
3843
import com.iemr.hwc.utils.IEMRApplBeans;
3944

@@ -57,11 +62,26 @@ public RestTemplate getRestTemplate() {
5762
return new RestTemplate();
5863
}
5964

60-
//Registering new fhir servlet for CHO mobile app
65+
// Registering new fhir servlet for CHO mobile app
6166
@Bean
6267
public ServletRegistrationBean ServletRegistrationBean() {
63-
ServletRegistrationBean registration= new ServletRegistrationBean(new FhirRestfulServer(context),"/fhir/*");
68+
ServletRegistrationBean registration = new ServletRegistrationBean(new FhirRestfulServer(context), "/fhir/*");
6469
registration.setName("FhirServlet");
6570
return registration;
6671
}
72+
73+
@Bean
74+
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
75+
RedisTemplate<String, Object> template = new RedisTemplate<>();
76+
template.setConnectionFactory(factory);
77+
78+
// Use StringRedisSerializer for keys (userId)
79+
template.setKeySerializer(new StringRedisSerializer());
80+
81+
// Use Jackson2JsonRedisSerializer for values (Users objects)
82+
Jackson2JsonRedisSerializer<Users> serializer = new Jackson2JsonRedisSerializer<>(Users.class);
83+
template.setValueSerializer(serializer);
84+
85+
return template;
86+
}
6787
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.iemr.hwc.config;
2+
3+
import org.springframework.cache.annotation.EnableCaching;
4+
import org.springframework.context.annotation.Bean;
5+
import org.springframework.context.annotation.Configuration;
6+
import org.springframework.data.redis.connection.RedisConnectionFactory;
7+
import org.springframework.data.redis.core.RedisTemplate;
8+
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
9+
import org.springframework.data.redis.serializer.StringRedisSerializer;
10+
import org.springframework.session.data.redis.config.ConfigureRedisAction;
11+
12+
import com.iemr.hwc.data.login.Users;
13+
14+
@Configuration
15+
@EnableCaching
16+
public class RedisConfig {
17+
18+
@Bean
19+
public ConfigureRedisAction configureRedisAction() {
20+
return ConfigureRedisAction.NO_OP;
21+
}
22+
23+
@Bean
24+
public RedisTemplate<String, Users> redisTemplate(RedisConnectionFactory factory) {
25+
RedisTemplate<String, Users> template = new RedisTemplate<>();
26+
template.setConnectionFactory(factory);
27+
28+
// Use StringRedisSerializer for keys (userId)
29+
template.setKeySerializer(new StringRedisSerializer());
30+
31+
// Use Jackson2JsonRedisSerializer for values (Users objects)
32+
Jackson2JsonRedisSerializer<Users> serializer = new Jackson2JsonRedisSerializer<>(Users.class);
33+
template.setValueSerializer(serializer);
34+
35+
return template;
36+
}
37+
38+
}

src/main/java/com/iemr/hwc/data/login/Users.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,21 @@
2121
*/
2222
package com.iemr.hwc.data.login;
2323

24+
import java.io.Serializable;
2425
import java.sql.Timestamp;
2526

2627
import jakarta.persistence.*;
2728

29+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
2830
import com.google.gson.annotations.Expose;
2931
import com.iemr.hwc.data.location.DistrictBranchMapping;
3032
import lombok.Data;
3133

3234
@Data
3335
@Entity
3436
@Table(name = "m_user")
35-
public class Users {
37+
@JsonIgnoreProperties(ignoreUnknown = true)
38+
public class Users implements Serializable {
3639
@Id
3740
@GeneratedValue(strategy = GenerationType.IDENTITY)
3841
@Expose

0 commit comments

Comments
 (0)