Files
backend/account-service/src/main/java/com/drinkool/RestAPI.java
T
TakahashiNguyen a2b9de91f5
Release package / release (push) Failing after 2m57s
feat: init customer authentication (#2)
Co-authored-by: TakahashiNg <83152264+TakahashiNguyen@users.noreply.github.com>
Co-authored-by: gitea-actions <actions-user@noreply.git.demonkernel.io.vn>
Reviewed-on: #2
2026-03-23 13:21:00 +00:00

75 lines
1.7 KiB
Java

package com.drinkool;
import com.drinkool.dtos.*;
import com.drinkool.models.Customer;
import com.drinkool.services.*;
import jakarta.inject.Inject;
import jakarta.transaction.Transactional;
import jakarta.ws.rs.*;
import jakarta.ws.rs.core.*;
@Path("/api")
public class RestAPI {
@Inject
OtpService otpService;
@POST
@Path("/signup")
@Transactional
public Response signup(Signup input) {
Customer newCustomer = new Customer();
newCustomer.signup(input.name, input.phone, input.password);
return Response.status(Response.Status.CREATED).build();
}
@POST
@Path("/quickSignup")
@Transactional
public Response quickSignup(QuickSignup input) {
Customer newCustomer = new Customer();
newCustomer.signup(input.phone);
return Response.status(Response.Status.CREATED).build();
}
@POST
@Path("/login")
public Response login(Login input) {
Customer customer = Customer.find("phone", input.phone).firstResult();
if (customer == null) throw new BadRequestException("InvalidPhoneNumber");
if (!customer.login(input.password)) throw new BadRequestException(
"InvalidPassword"
);
return Response.accepted().build();
}
@POST
@Path("/sms_otp")
public Response smsOtp(SmsOtp input) {
String otp = otpService.generateAndSaveOtp(input.phone);
// Ở đây bạn sẽ gọi Kafka để gửi SMS thực tế
System.out.println("OTP cho " + input.phone + " là: " + otp);
return Response.accepted().build();
}
@POST
@Path("/quicklogin")
public Response quickLogin(QuickLogin input) {
if (otpService.verifyOtp(input.phone, input.otp)) {
return Response.accepted().build();
}
return Response.status(Response.Status.UNAUTHORIZED)
.entity("InvalidOTP")
.build();
}
}