From 913403e2859d7e3f816a347e9dc16ffa11e3cd88 Mon Sep 17 00:00:00 2001 From: Hykilpikonna Date: Sat, 9 Jan 2021 17:29:51 -0500 Subject: [PATCH] [B][+] Create /register api --- .../org/hydev/ios/alarmclock/Extensions.kt | 5 ++++ .../org/hydev/ios/alarmclock/data/User.kt | 26 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 Backend/src/main/kotlin/org/hydev/ios/alarmclock/Extensions.kt diff --git a/Backend/src/main/kotlin/org/hydev/ios/alarmclock/Extensions.kt b/Backend/src/main/kotlin/org/hydev/ios/alarmclock/Extensions.kt new file mode 100644 index 0000000..2139727 --- /dev/null +++ b/Backend/src/main/kotlin/org/hydev/ios/alarmclock/Extensions.kt @@ -0,0 +1,5 @@ +package org.hydev.ios.alarmclock + +import org.springframework.http.ResponseEntity + +fun bad(msg: String): ResponseEntity = ResponseEntity.badRequest().body(msg) diff --git a/Backend/src/main/kotlin/org/hydev/ios/alarmclock/data/User.kt b/Backend/src/main/kotlin/org/hydev/ios/alarmclock/data/User.kt index 35596f3..627b05f 100644 --- a/Backend/src/main/kotlin/org/hydev/ios/alarmclock/data/User.kt +++ b/Backend/src/main/kotlin/org/hydev/ios/alarmclock/data/User.kt @@ -32,3 +32,29 @@ data class User( @NotNull @Column(length = 128) var passHash: String, ) + +interface UserRepo: JpaRepository + +@RestController +@RequestMapping("/api/user") +class UserApi(val repo: UserRepo) +{ + @GetMapping("/register") + fun register(@RequestParam("name") name: String, @RequestParam("pass") pass: String): Any + { + // Check username length + if (name.length !in 3..32) return bad("Username length not in range 3 to 32") + + // Check if username exists + val em = ExampleMatcher.matching().withIgnorePaths("id", "passHash").withMatcher("name", ignoreCase()) + val user = User(0, name, pass) + if (repo.exists(Example.of(user, em))) return bad("Username has already been used") + + // Check password strength + if (pass.length < 8) return bad("Password must be longer than 8 chars") + + // Register + repo.save(user) + return user + } +}