Compare commits
1 Commits
master
...
feature/de
| Author | SHA1 | Date |
|---|---|---|
|
|
768558ec85 |
|
|
@ -74,6 +74,8 @@ subprojects {
|
||||||
dependency("software.amazon.awssdk:s3:2.10.11")
|
dependency("software.amazon.awssdk:s3:2.10.11")
|
||||||
|
|
||||||
dependency("com.google.firebase:firebase-admin:9.0.0")
|
dependency("com.google.firebase:firebase-admin:9.0.0")
|
||||||
|
|
||||||
|
dependency("com.github.ua-parser:uap-java:1.5.3")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
plugins {
|
||||||
|
id("kotlin")
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package ru.touchin.auth.core.device.dto.enums
|
package ru.touchin.common.devices.enums
|
||||||
|
|
||||||
enum class DevicePlatform {
|
enum class DevicePlatform {
|
||||||
Android, Huawei, Apple, Web
|
Android, Huawei, Apple, Web
|
||||||
|
|
@ -8,6 +8,7 @@ dependencies {
|
||||||
runtimeOnly("org.postgresql:postgresql")
|
runtimeOnly("org.postgresql:postgresql")
|
||||||
|
|
||||||
api(project(":common"))
|
api(project(":common"))
|
||||||
|
api(project(":common-device"))
|
||||||
|
|
||||||
api(project(":common-spring-jpa"))
|
api(project(":common-spring-jpa"))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package ru.touchin.auth.core.device.dto
|
package ru.touchin.auth.core.device.dto
|
||||||
|
|
||||||
import ru.touchin.auth.core.device.dto.enums.DevicePlatform
|
import ru.touchin.common.devices.enums.DevicePlatform
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
data class Device(
|
data class Device(
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
package ru.touchin.auth.core.device.models
|
package ru.touchin.auth.core.device.models
|
||||||
|
|
||||||
import ru.touchin.auth.core.configurations.AuthCoreDatabaseConfiguration.Companion.SCHEMA
|
import ru.touchin.auth.core.configurations.AuthCoreDatabaseConfiguration.Companion.SCHEMA
|
||||||
import ru.touchin.auth.core.device.dto.enums.DevicePlatform
|
|
||||||
import ru.touchin.auth.core.user.models.UserEntity
|
import ru.touchin.auth.core.user.models.UserEntity
|
||||||
|
import ru.touchin.common.devices.enums.DevicePlatform
|
||||||
import ru.touchin.common.spring.jpa.models.AuditableUuidIdEntity
|
import ru.touchin.common.spring.jpa.models.AuditableUuidIdEntity
|
||||||
import javax.persistence.Entity
|
import javax.persistence.Entity
|
||||||
import javax.persistence.JoinColumn
|
import javax.persistence.JoinColumn
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package ru.touchin.auth.core.device.services
|
package ru.touchin.auth.core.device.services
|
||||||
|
|
||||||
import ru.touchin.auth.core.device.dto.Device
|
import ru.touchin.auth.core.device.dto.Device
|
||||||
import ru.touchin.auth.core.device.dto.enums.DevicePlatform
|
import ru.touchin.common.devices.enums.DevicePlatform
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|
||||||
interface DeviceCoreService {
|
interface DeviceCoreService {
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,9 @@ import org.springframework.transaction.annotation.Transactional
|
||||||
import ru.touchin.auth.core.device.converters.DeviceConverter.toDto
|
import ru.touchin.auth.core.device.converters.DeviceConverter.toDto
|
||||||
import ru.touchin.auth.core.device.dto.Device
|
import ru.touchin.auth.core.device.dto.Device
|
||||||
import ru.touchin.auth.core.device.models.DeviceEntity
|
import ru.touchin.auth.core.device.models.DeviceEntity
|
||||||
import ru.touchin.auth.core.device.dto.enums.DevicePlatform
|
|
||||||
import ru.touchin.auth.core.device.repository.DeviceRepository
|
import ru.touchin.auth.core.device.repository.DeviceRepository
|
||||||
import ru.touchin.auth.core.device.repository.findByIdOrThrow
|
import ru.touchin.auth.core.device.repository.findByIdOrThrow
|
||||||
|
import ru.touchin.common.devices.enums.DevicePlatform
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
|
||||||
|
|
@ -8,12 +8,12 @@ import org.springframework.beans.factory.annotation.Autowired
|
||||||
import org.springframework.dao.DataAccessException
|
import org.springframework.dao.DataAccessException
|
||||||
import ru.touchin.auth.core.device.exceptions.DeviceNotFoundException
|
import ru.touchin.auth.core.device.exceptions.DeviceNotFoundException
|
||||||
import ru.touchin.auth.core.device.models.DeviceEntity
|
import ru.touchin.auth.core.device.models.DeviceEntity
|
||||||
import ru.touchin.auth.core.device.dto.enums.DevicePlatform
|
|
||||||
import ru.touchin.auth.core.device.repository.DeviceRepository
|
import ru.touchin.auth.core.device.repository.DeviceRepository
|
||||||
import ru.touchin.auth.core.device.repository.findByIdOrThrow
|
import ru.touchin.auth.core.device.repository.findByIdOrThrow
|
||||||
import ru.touchin.auth.core.device.repository.findByIdWithLockOrThrow
|
import ru.touchin.auth.core.device.repository.findByIdWithLockOrThrow
|
||||||
import ru.touchin.auth.core.user.models.UserEntity
|
import ru.touchin.auth.core.user.models.UserEntity
|
||||||
import ru.touchin.auth.core.user.repositories.UserRepository
|
import ru.touchin.auth.core.user.repositories.UserRepository
|
||||||
|
import ru.touchin.common.devices.enums.DevicePlatform
|
||||||
import ru.touchin.common.spring.test.jpa.repository.RepositoryTest
|
import ru.touchin.common.spring.test.jpa.repository.RepositoryTest
|
||||||
import java.time.Duration
|
import java.time.Duration
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,8 @@ import org.springframework.test.context.ActiveProfiles
|
||||||
import ru.touchin.auth.core.device.dto.Device
|
import ru.touchin.auth.core.device.dto.Device
|
||||||
import ru.touchin.auth.core.device.exceptions.DeviceNotFoundException
|
import ru.touchin.auth.core.device.exceptions.DeviceNotFoundException
|
||||||
import ru.touchin.auth.core.device.models.DeviceEntity
|
import ru.touchin.auth.core.device.models.DeviceEntity
|
||||||
import ru.touchin.auth.core.device.dto.enums.DevicePlatform
|
|
||||||
import ru.touchin.auth.core.device.repository.DeviceRepository
|
import ru.touchin.auth.core.device.repository.DeviceRepository
|
||||||
|
import ru.touchin.common.devices.enums.DevicePlatform
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@ActiveProfiles("test")
|
@ActiveProfiles("test")
|
||||||
|
|
|
||||||
|
|
@ -8,13 +8,13 @@ import org.junit.jupiter.api.Test
|
||||||
import org.mockito.internal.matchers.apachecommons.ReflectionEquals
|
import org.mockito.internal.matchers.apachecommons.ReflectionEquals
|
||||||
import org.springframework.beans.factory.annotation.Autowired
|
import org.springframework.beans.factory.annotation.Autowired
|
||||||
import org.springframework.dao.DataAccessException
|
import org.springframework.dao.DataAccessException
|
||||||
import ru.touchin.auth.core.device.dto.enums.DevicePlatform
|
|
||||||
import ru.touchin.auth.core.device.models.DeviceEntity
|
import ru.touchin.auth.core.device.models.DeviceEntity
|
||||||
import ru.touchin.auth.core.device.repository.DeviceRepository
|
import ru.touchin.auth.core.device.repository.DeviceRepository
|
||||||
import ru.touchin.auth.core.scope.models.ScopeEntity
|
import ru.touchin.auth.core.scope.models.ScopeEntity
|
||||||
import ru.touchin.auth.core.scope.repositories.ScopeRepository
|
import ru.touchin.auth.core.scope.repositories.ScopeRepository
|
||||||
import ru.touchin.auth.core.user.exceptions.UserNotFoundException
|
import ru.touchin.auth.core.user.exceptions.UserNotFoundException
|
||||||
import ru.touchin.auth.core.user.models.UserEntity
|
import ru.touchin.auth.core.user.models.UserEntity
|
||||||
|
import ru.touchin.common.devices.enums.DevicePlatform
|
||||||
import ru.touchin.common.spring.test.jpa.repository.RepositoryTest
|
import ru.touchin.common.spring.test.jpa.repository.RepositoryTest
|
||||||
import java.time.ZonedDateTime
|
import java.time.ZonedDateTime
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ import org.junit.jupiter.api.assertThrows
|
||||||
import org.springframework.beans.factory.annotation.Autowired
|
import org.springframework.beans.factory.annotation.Autowired
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder
|
import org.springframework.security.crypto.password.PasswordEncoder
|
||||||
import ru.touchin.auth.core.device.dto.Device
|
import ru.touchin.auth.core.device.dto.Device
|
||||||
import ru.touchin.auth.core.device.dto.enums.DevicePlatform
|
|
||||||
import ru.touchin.auth.core.device.repository.DeviceRepository
|
import ru.touchin.auth.core.device.repository.DeviceRepository
|
||||||
import ru.touchin.auth.core.device.repository.findByIdOrThrow
|
import ru.touchin.auth.core.device.repository.findByIdOrThrow
|
||||||
import ru.touchin.auth.core.device.services.DeviceCoreService
|
import ru.touchin.auth.core.device.services.DeviceCoreService
|
||||||
|
|
@ -30,6 +29,7 @@ import ru.touchin.auth.core.user.services.dto.NewUser
|
||||||
import ru.touchin.auth.core.user.services.dto.UserLogin
|
import ru.touchin.auth.core.user.services.dto.UserLogin
|
||||||
import ru.touchin.auth.core.user.services.dto.UserLogout
|
import ru.touchin.auth.core.user.services.dto.UserLogout
|
||||||
import ru.touchin.auth.core.user.services.dto.UserUpdatePassword
|
import ru.touchin.auth.core.user.services.dto.UserUpdatePassword
|
||||||
|
import ru.touchin.common.devices.enums.DevicePlatform
|
||||||
import ru.touchin.common.spring.test.jpa.repository.RepositoryTest
|
import ru.touchin.common.spring.test.jpa.repository.RepositoryTest
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import javax.persistence.EntityManager
|
import javax.persistence.EntityManager
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ import org.springframework.boot.test.context.SpringBootTest
|
||||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
|
||||||
import org.springframework.test.context.ActiveProfiles
|
import org.springframework.test.context.ActiveProfiles
|
||||||
import ru.touchin.auth.core.device.converters.DeviceConverter.toDto
|
import ru.touchin.auth.core.device.converters.DeviceConverter.toDto
|
||||||
import ru.touchin.auth.core.device.dto.enums.DevicePlatform
|
|
||||||
import ru.touchin.auth.core.device.exceptions.DeviceAlreadyLinkedException
|
import ru.touchin.auth.core.device.exceptions.DeviceAlreadyLinkedException
|
||||||
import ru.touchin.auth.core.device.models.DeviceEntity
|
import ru.touchin.auth.core.device.models.DeviceEntity
|
||||||
import ru.touchin.auth.core.device.repository.DeviceRepository
|
import ru.touchin.auth.core.device.repository.DeviceRepository
|
||||||
|
|
@ -30,6 +29,7 @@ import ru.touchin.auth.core.user.repositories.UserAccountRepository
|
||||||
import ru.touchin.auth.core.user.repositories.UserRepository
|
import ru.touchin.auth.core.user.repositories.UserRepository
|
||||||
import ru.touchin.auth.core.user.services.dto.NewAnonymousUser
|
import ru.touchin.auth.core.user.services.dto.NewAnonymousUser
|
||||||
import ru.touchin.auth.core.user.services.dto.NewUser
|
import ru.touchin.auth.core.user.services.dto.NewUser
|
||||||
|
import ru.touchin.common.devices.enums.DevicePlatform
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@ActiveProfiles("test")
|
@ActiveProfiles("test")
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ include("common-spring-test-jpa")
|
||||||
include("common-measure")
|
include("common-measure")
|
||||||
include("common-measure-spring")
|
include("common-measure-spring")
|
||||||
include("common-territories")
|
include("common-territories")
|
||||||
|
include("common-device")
|
||||||
include("common-geo")
|
include("common-geo")
|
||||||
include("common-geo-spatial4j-spring")
|
include("common-geo-spatial4j-spring")
|
||||||
include("common-messaging")
|
include("common-messaging")
|
||||||
|
|
@ -56,3 +57,4 @@ include("security-jwt-common")
|
||||||
include("s3-storage")
|
include("s3-storage")
|
||||||
include("server-info-spring-web")
|
include("server-info-spring-web")
|
||||||
include("geoip-core")
|
include("geoip-core")
|
||||||
|
include("user-agent")
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
plugins {
|
||||||
|
id("kotlin")
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation(project(":common-device"))
|
||||||
|
|
||||||
|
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
|
||||||
|
|
||||||
|
implementation("com.github.ua-parser:uap-java")
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
package ru.touchin.ua.devices
|
||||||
|
|
||||||
|
import ru.touchin.common.devices.enums.DevicePlatform
|
||||||
|
import ua_parser.Parser as UaParser
|
||||||
|
|
||||||
|
class DevicePlatformFactory {
|
||||||
|
|
||||||
|
fun fromUserAgent(userAgent: String): DevicePlatform {
|
||||||
|
val client = UaParser().parse(userAgent)
|
||||||
|
|
||||||
|
if (client.device.family.matches(HUAWEI_DEVICE_FAMILY_REGEX)) {
|
||||||
|
return DevicePlatform.Huawei
|
||||||
|
}
|
||||||
|
|
||||||
|
return when (client.os.family) {
|
||||||
|
"iOS" -> DevicePlatform.Apple
|
||||||
|
"Android" -> DevicePlatform.Android
|
||||||
|
else -> DevicePlatform.Web
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private companion object {
|
||||||
|
|
||||||
|
val HUAWEI_DEVICE_FAMILY_REGEX = Regex(
|
||||||
|
"ALP-|AMN-|ANA-|ANE-|ANG-|AQM-|ARS-|ART-|ATU-|BAC-|BLA-|BRQ-|CAG-|CAM-|CAN-|CAZ-|CDL-|CDY-|CLT-" +
|
||||||
|
"|CRO-|CUN-|DIG-|DRA-|DUA-|DUB-|DVC-|ELE-|ELS-|EML-|EVA-|EVR-|FIG-|FLA-|FRL-|GLK-|HMA-|HW-|HWI-|INE-" +
|
||||||
|
"|JAT-|JEF-|JER-|JKM-|JNY-|JSC-|LDN-|LIO-|LON-|LUA-|LYA-|LYO-|MAR-|MED-|MHA-|MLA-|MRD-|MYA-|NCE-|NEO-" +
|
||||||
|
"|NOH-|NOP-|OCE-|PAR-|PIC-|POT-|PPA-|PRA-|RNE-|SEA-|SLA-|SNE-|SPN-|STK-|TAH-|TAS-|TET-|TRT-|VCE-|VIE-" +
|
||||||
|
"|VKY-|VNS-|VOG-|VTR-|WAS-|WKG-|WLZ-|YAL"
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue