-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
3fc1136
commit 3fe33f0
Showing
19 changed files
with
550 additions
and
60 deletions.
There are no files selected for viewing
34 changes: 17 additions & 17 deletions
34
src/main/java/se/ton/t210/configuration/filter/XssReplacingFilter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,17 +1,17 @@ | ||
package se.ton.t210.configuration.filter; | ||
|
||
import se.ton.t210.configuration.http.XssCleanHttpRequestWrapper; | ||
|
||
import javax.servlet.*; | ||
import javax.servlet.annotation.WebFilter; | ||
import javax.servlet.http.HttpServletRequest; | ||
import java.io.IOException; | ||
|
||
@WebFilter(urlPatterns = {"/api/*"}) | ||
public class XssReplacingFilter implements Filter { | ||
|
||
@Override | ||
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { | ||
chain.doFilter(new XssCleanHttpRequestWrapper((HttpServletRequest) request), response); | ||
} | ||
} | ||
//package se.ton.t210.configuration.filter; | ||
// | ||
//import se.ton.t210.configuration.http.XssCleanHttpRequestWrapper; | ||
// | ||
//import javax.servlet.*; | ||
//import javax.servlet.annotation.WebFilter; | ||
//import javax.servlet.http.HttpServletRequest; | ||
//import java.io.IOException; | ||
// | ||
////@WebFilter(urlPatterns = {"/api/*"}) | ||
//public class XssReplacingFilter implements Filter { | ||
// | ||
// @Override | ||
// public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { | ||
// chain.doFilter(new XssCleanHttpRequestWrapper((HttpServletRequest) request), response); | ||
// } | ||
//} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package se.ton.t210.controller; | ||
|
||
import org.springframework.data.domain.Pageable; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.RestController; | ||
import se.ton.t210.dto.AccessDateTimeFilter; | ||
import se.ton.t210.dto.AccessDateTimeResponse; | ||
import se.ton.t210.service.AdminService; | ||
|
||
import java.util.List; | ||
|
||
@RestController | ||
public class AdminController { | ||
|
||
private final AdminService adminService; | ||
|
||
public AdminController(AdminService adminService) { | ||
this.adminService = adminService; | ||
} | ||
|
||
@GetMapping("/api/admin/users/access") | ||
public ResponseEntity<List<AccessDateTimeResponse>> usersMember(Pageable pageable, AccessDateTimeFilter filter) { | ||
final List<AccessDateTimeResponse> responses = adminService.findAll(pageable, filter); | ||
return ResponseEntity.ok(responses); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
38 changes: 38 additions & 0 deletions
38
src/main/java/se/ton/t210/domain/AccessDataTimeRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package se.ton.t210.domain; | ||
|
||
import org.springframework.data.domain.Pageable; | ||
import org.springframework.data.jpa.domain.Specification; | ||
import org.springframework.data.jpa.repository.JpaRepository; | ||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; | ||
|
||
import java.time.LocalDateTime; | ||
import java.util.List; | ||
|
||
public interface AccessDataTimeRepository extends JpaRepository<AccessDateTime, Long>, JpaSpecificationExecutor<AccessDateTime> { | ||
|
||
List<AccessDateTime> findAllByMemberId(Long memberId, Specification<AccessDateTime> spec, Pageable pageable); | ||
|
||
List<AccessDateTime> findAllByAccessTimeGreaterThan(LocalDateTime dateFrom); | ||
|
||
List<AccessDateTime> findAllByAccessTimeLessThan(LocalDateTime dateTo); | ||
|
||
List<AccessDateTime> findAllByAccessTimeGreaterThanAndAccessTimeLessThan(LocalDateTime dateFrom, | ||
LocalDateTime dateTo | ||
); | ||
|
||
List<AccessDateTime> findAllByAccessTimeBetween(LocalDateTime dateFrom, LocalDateTime dateTo); | ||
|
||
static Specification<AccessDateTime> greaterThanOrEqualsByTime(LocalDateTime dateFrom) { | ||
return (root, query, criteriaBuilder) -> criteriaBuilder.greaterThanOrEqualTo(root.get(AccessDateTime_.accessTime), dateFrom); | ||
} | ||
|
||
static Specification<AccessDateTime> lessThanOrEqualsByTime(LocalDateTime dateTo) { | ||
return (root, query, criteriaBuilder) -> criteriaBuilder.lessThanOrEqualTo(root.get(AccessDateTime_.accessTime), dateTo); | ||
} | ||
|
||
// static Specification<AccessDateTime> equalsMemberId(Long memberId) { | ||
// return (root, query, criteriaBuilder) -> criteriaBuilder.equal(root.get(AccessDateTime_.memberId), memberId) | ||
// } | ||
|
||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package se.ton.t210.domain; | ||
|
||
import lombok.Getter; | ||
|
||
import javax.persistence.Entity; | ||
import javax.persistence.GeneratedValue; | ||
import javax.persistence.GenerationType; | ||
import javax.persistence.Id; | ||
import java.time.LocalDateTime; | ||
|
||
@Getter | ||
@Entity | ||
public class AccessDateTime { | ||
|
||
@GeneratedValue(strategy = GenerationType.AUTO) | ||
@Id | ||
private Long id; | ||
private LocalDateTime accessTime; | ||
private Long memberId; | ||
|
||
public AccessDateTime() { | ||
} | ||
|
||
public AccessDateTime(Long id, LocalDateTime accessTime, Long memberId) { | ||
this.id = id; | ||
this.accessTime = accessTime; | ||
this.memberId = memberId; | ||
} | ||
|
||
public AccessDateTime(LocalDateTime accessTime, Long memberId) { | ||
this(null, accessTime, memberId); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
package se.ton.t210.domain; | ||
|
||
import javax.persistence.metamodel.SingularAttribute; | ||
import javax.persistence.metamodel.StaticMetamodel; | ||
import java.time.LocalDateTime; | ||
|
||
@StaticMetamodel(Member.class) | ||
public class AccessDateTime_ { | ||
public static volatile SingularAttribute<AccessDateTime, Long> id; | ||
public static volatile SingularAttribute<AccessDateTime, LocalDateTime> accessTime; | ||
public static volatile SingularAttribute<AccessDateTime, Long> memberId; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package se.ton.t210.domain; | ||
|
||
import se.ton.t210.domain.type.ApplicationType; | ||
|
||
import javax.persistence.metamodel.SingularAttribute; | ||
import javax.persistence.metamodel.StaticMetamodel; | ||
|
||
@StaticMetamodel(Member.class) | ||
public class Member_ { | ||
public static volatile SingularAttribute<Member, Long> id; | ||
public static volatile SingularAttribute<Member, String> name; | ||
public static volatile SingularAttribute<Member, String> email; | ||
public static volatile SingularAttribute<Member, String> password; | ||
public static volatile SingularAttribute<Member, ApplicationType> applicationType; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package se.ton.t210.domain; | ||
|
||
import se.ton.t210.domain.type.ApplicationType; | ||
|
||
import javax.persistence.metamodel.SingularAttribute; | ||
import javax.persistence.metamodel.StaticMetamodel; | ||
|
||
@StaticMetamodel(MonthlyScore.class) | ||
public class MonthlyScore_ { | ||
public static volatile SingularAttribute<MonthlyScore, Long> id; | ||
public static volatile SingularAttribute<MonthlyScore, ApplicationType> applicationType; | ||
public static volatile SingularAttribute<MonthlyScore, Integer> score; | ||
public static volatile SingularAttribute<MonthlyScore, Long> memberId; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package se.ton.t210.dto; | ||
|
||
import lombok.Getter; | ||
|
||
import java.time.LocalDate; | ||
import java.util.Optional; | ||
|
||
@Getter | ||
public class AccessDateTimeFilter { | ||
|
||
private Optional<String> memberName; | ||
private Optional<LocalDate> dateFrom; | ||
private Optional<LocalDate> dateTo; | ||
|
||
public AccessDateTimeFilter(Optional<String> memberName, Optional<LocalDate> dateFrom, Optional<LocalDate> dateTo) { | ||
this.memberName = memberName; | ||
this.dateFrom = dateFrom; | ||
this.dateTo = dateTo; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
package se.ton.t210.dto; | ||
|
||
import lombok.Getter; | ||
import se.ton.t210.domain.AccessDateTime; | ||
import se.ton.t210.domain.Member; | ||
|
||
import java.time.LocalDateTime; | ||
|
||
@Getter | ||
public class AccessDateTimeResponse { | ||
|
||
private final LocalDateTime dateTime; | ||
private final String memberName; | ||
private final String memberEmail; | ||
private final String memberEncryptedPassword; | ||
|
||
public AccessDateTimeResponse(LocalDateTime dateTime, String memberName, String memberEmail, String memberEncryptedPassword) { | ||
this.dateTime = dateTime; | ||
this.memberName = memberName; | ||
this.memberEmail = memberEmail; | ||
this.memberEncryptedPassword = memberEncryptedPassword; | ||
} | ||
|
||
public static AccessDateTimeResponse of(AccessDateTime it, Member member) { | ||
return new AccessDateTimeResponse( | ||
it.getAccessTime(), | ||
member.getName(), | ||
member.getEmail(), | ||
member.getPassword() | ||
); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
package se.ton.t210.service; | ||
|
||
import org.springframework.data.domain.Pageable; | ||
import org.springframework.data.jpa.domain.Specification; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.stereotype.Service; | ||
import org.springframework.transaction.annotation.Transactional; | ||
import se.ton.t210.domain.*; | ||
import se.ton.t210.dto.AccessDateTimeFilter; | ||
import se.ton.t210.dto.AccessDateTimeResponse; | ||
|
||
import java.time.LocalDate; | ||
import java.time.LocalDateTime; | ||
import java.util.List; | ||
import java.util.Optional; | ||
import java.util.stream.Collectors; | ||
|
||
@Service | ||
public class AdminService { | ||
|
||
private final MemberRepository memberRepository; | ||
private final MonthlyScoreRepository monthlyScoreRepository; | ||
private final AccessDataTimeRepository accessDataTimeRepository; | ||
|
||
public AdminService(MemberRepository memberRepository, MonthlyScoreRepository monthlyScoreRepository, AccessDataTimeRepository accessDataTimeRepository) { | ||
this.memberRepository = memberRepository; | ||
this.monthlyScoreRepository = monthlyScoreRepository; | ||
this.accessDataTimeRepository = accessDataTimeRepository; | ||
} | ||
|
||
@Transactional | ||
public List<AccessDateTimeResponse> findAll(Pageable pageable, AccessDateTimeFilter filter) { | ||
final LocalDateTime dateTimeFrom = filter.getDateFrom().orElse(LocalDate.MIN) | ||
.atTime(0, 0, 0); | ||
final LocalDateTime dateTimeTo = filter.getDateTo().orElse(LocalDate.MAX) | ||
.atTime(23, 59, 59); | ||
return accessDataTimeRepository.findAllByAccessTimeBetween(dateTimeTo, dateTimeFrom) | ||
.stream() | ||
.map(it -> { | ||
final Member member = memberRepository.findById(it.getMemberId()).orElseThrow(); | ||
return AccessDateTimeResponse.of(it, member); | ||
}).collect(Collectors.toList()); | ||
} | ||
} |
Oops, something went wrong.