You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package com.iflytop.handacid.app.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.iflytop.handacid.app.core.state.DeviceState; import com.iflytop.handacid.app.model.dto.LoginDTO; import com.iflytop.handacid.common.enums.EnableStatus; import com.iflytop.handacid.common.model.entity.User; import com.iflytop.handacid.common.result.Result; import com.iflytop.handacid.common.result.ResultCode; import com.iflytop.handacid.common.service.UserService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*;
import java.util.Objects;
/** * 认证控制 */ @Tag(name = "\uD83D\uDD11认证") @RestController @RequestMapping("/api/auth") @RequiredArgsConstructor @Slf4j public class AuthController { private final UserService userService; private final DeviceState deviceState;
@Operation(summary = "账号密码登录") @PostMapping("/login") public Result<User> login(@Valid @RequestBody LoginDTO loginDTO) { User user = userService.getOne(new LambdaQueryWrapper<>(User.class).eq(User::getUsername, loginDTO.getUsername())); if (user != null && !Objects.equals(user.getDeleted(), EnableStatus.ENABLE) && user.getPassword().equals(loginDTO.getPassword())) { deviceState.setCurrentUser(user); user.setPassword(null); return Result.success(user); } return Result.failed(ResultCode.INVALID_CREDENTIALS); }
@Operation(summary = "用户登出") @PostMapping("/logout") public Result<String> logout() { deviceState.setCurrentUser(null); return Result.success(); }
@Operation(summary = "获取当前登录用户") @GetMapping("/current") public Result<User> current() { return Result.success(deviceState.getCurrentUser()); } }
|