mirror of
https://github.com/FatttSnake/Pinnacle-OA.git
synced 2026-04-05 23:11:24 +08:00
Added spring security
This commit is contained in:
@@ -1,16 +0,0 @@
|
||||
package com.cfive.pinnacle.service;
|
||||
|
||||
import com.cfive.pinnacle.entity.PowerElement;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 中间表-权限-页面元素 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author FatttSnake
|
||||
* @since 2023-04-30
|
||||
*/
|
||||
public interface IPowerElementService extends IService<PowerElement> {
|
||||
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
package com.cfive.pinnacle.service;
|
||||
|
||||
import com.cfive.pinnacle.entity.PowerFile;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 中间表-权限-文件 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author FatttSnake
|
||||
* @since 2023-04-30
|
||||
*/
|
||||
public interface IPowerFileService extends IService<PowerFile> {
|
||||
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
package com.cfive.pinnacle.service;
|
||||
|
||||
import com.cfive.pinnacle.entity.PowerMenu;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 中间表-权限-菜单 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author FatttSnake
|
||||
* @since 2023-04-30
|
||||
*/
|
||||
public interface IPowerMenuService extends IService<PowerMenu> {
|
||||
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
package com.cfive.pinnacle.service;
|
||||
|
||||
import com.cfive.pinnacle.entity.PowerOperation;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 中间表-权限-功能 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author FatttSnake
|
||||
* @since 2023-04-30
|
||||
*/
|
||||
public interface IPowerOperationService extends IService<PowerOperation> {
|
||||
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
package com.cfive.pinnacle.service.impl;
|
||||
|
||||
import com.cfive.pinnacle.entity.PowerElement;
|
||||
import com.cfive.pinnacle.mapper.PowerElementMapper;
|
||||
import com.cfive.pinnacle.service.IPowerElementService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 中间表-权限-页面元素 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author FatttSnake
|
||||
* @since 2023-04-30
|
||||
*/
|
||||
@Service
|
||||
public class PowerElementServiceImpl extends ServiceImpl<PowerElementMapper, PowerElement> implements IPowerElementService {
|
||||
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
package com.cfive.pinnacle.service.impl;
|
||||
|
||||
import com.cfive.pinnacle.entity.PowerFile;
|
||||
import com.cfive.pinnacle.mapper.PowerFileMapper;
|
||||
import com.cfive.pinnacle.service.IPowerFileService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 中间表-权限-文件 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author FatttSnake
|
||||
* @since 2023-04-30
|
||||
*/
|
||||
@Service
|
||||
public class PowerFileServiceImpl extends ServiceImpl<PowerFileMapper, PowerFile> implements IPowerFileService {
|
||||
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
package com.cfive.pinnacle.service.impl;
|
||||
|
||||
import com.cfive.pinnacle.entity.PowerMenu;
|
||||
import com.cfive.pinnacle.mapper.PowerMenuMapper;
|
||||
import com.cfive.pinnacle.service.IPowerMenuService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 中间表-权限-菜单 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author FatttSnake
|
||||
* @since 2023-04-30
|
||||
*/
|
||||
@Service
|
||||
public class PowerMenuServiceImpl extends ServiceImpl<PowerMenuMapper, PowerMenu> implements IPowerMenuService {
|
||||
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
package com.cfive.pinnacle.service.impl;
|
||||
|
||||
import com.cfive.pinnacle.entity.PowerOperation;
|
||||
import com.cfive.pinnacle.mapper.PowerOperationMapper;
|
||||
import com.cfive.pinnacle.service.IPowerOperationService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 中间表-权限-功能 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author FatttSnake
|
||||
* @since 2023-04-30
|
||||
*/
|
||||
@Service
|
||||
public class PowerOperationServiceImpl extends ServiceImpl<PowerOperationMapper, PowerOperation> implements IPowerOperationService {
|
||||
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.cfive.pinnacle.service;
|
||||
package com.cfive.pinnacle.service.permission;
|
||||
|
||||
import com.cfive.pinnacle.entity.Element;
|
||||
import com.cfive.pinnacle.entity.permission.Element;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.cfive.pinnacle.service;
|
||||
package com.cfive.pinnacle.service.permission;
|
||||
|
||||
import com.cfive.pinnacle.entity.File;
|
||||
import com.cfive.pinnacle.entity.permission.File;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.cfive.pinnacle.service.permission;
|
||||
|
||||
import com.cfive.pinnacle.entity.User;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public interface ILoginService {
|
||||
HashMap<String, String> login(User user);
|
||||
|
||||
void logout();
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.cfive.pinnacle.service;
|
||||
package com.cfive.pinnacle.service.permission;
|
||||
|
||||
import com.cfive.pinnacle.entity.Menu;
|
||||
import com.cfive.pinnacle.entity.permission.Menu;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.cfive.pinnacle.service;
|
||||
package com.cfive.pinnacle.service.permission;
|
||||
|
||||
import com.cfive.pinnacle.entity.OperationLog;
|
||||
import com.cfive.pinnacle.entity.permission.OperationLog;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.cfive.pinnacle.service;
|
||||
package com.cfive.pinnacle.service.permission;
|
||||
|
||||
import com.cfive.pinnacle.entity.Operation;
|
||||
import com.cfive.pinnacle.entity.permission.Operation;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.cfive.pinnacle.service;
|
||||
package com.cfive.pinnacle.service.permission;
|
||||
|
||||
import com.cfive.pinnacle.entity.PowerRole;
|
||||
import com.cfive.pinnacle.entity.permission.PowerRole;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.cfive.pinnacle.service;
|
||||
package com.cfive.pinnacle.service.permission;
|
||||
|
||||
import com.cfive.pinnacle.entity.Power;
|
||||
import com.cfive.pinnacle.entity.permission.Power;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.cfive.pinnacle.service;
|
||||
package com.cfive.pinnacle.service.permission;
|
||||
|
||||
import com.cfive.pinnacle.entity.PowerType;
|
||||
import com.cfive.pinnacle.entity.permission.PowerType;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.cfive.pinnacle.service.impl;
|
||||
package com.cfive.pinnacle.service.permission.impl;
|
||||
|
||||
import com.cfive.pinnacle.entity.Element;
|
||||
import com.cfive.pinnacle.mapper.ElementMapper;
|
||||
import com.cfive.pinnacle.service.IElementService;
|
||||
import com.cfive.pinnacle.entity.permission.Element;
|
||||
import com.cfive.pinnacle.mapper.permission.ElementMapper;
|
||||
import com.cfive.pinnacle.service.permission.IElementService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.cfive.pinnacle.service.impl;
|
||||
package com.cfive.pinnacle.service.permission.impl;
|
||||
|
||||
import com.cfive.pinnacle.entity.File;
|
||||
import com.cfive.pinnacle.mapper.FileMapper;
|
||||
import com.cfive.pinnacle.service.IFileService;
|
||||
import com.cfive.pinnacle.entity.permission.File;
|
||||
import com.cfive.pinnacle.mapper.permission.FileMapper;
|
||||
import com.cfive.pinnacle.service.permission.IFileService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.cfive.pinnacle.service.permission.impl;
|
||||
|
||||
import com.cfive.pinnacle.entity.User;
|
||||
import com.cfive.pinnacle.entity.permission.LoginUser;
|
||||
import com.cfive.pinnacle.service.permission.ILoginService;
|
||||
import com.cfive.pinnacle.utils.JwtUtil;
|
||||
import com.cfive.pinnacle.utils.RedisCache;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.authentication.AuthenticationManager;
|
||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Objects;
|
||||
|
||||
@Service
|
||||
public class LoginServiceImpl implements ILoginService {
|
||||
private AuthenticationManager authenticationManager;
|
||||
private RedisCache redisCache;
|
||||
|
||||
@Autowired
|
||||
public void setAuthenticationManager(AuthenticationManager authenticationManager) {
|
||||
this.authenticationManager = authenticationManager;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void setRedisCache(RedisCache redisCache) {
|
||||
this.redisCache = redisCache;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HashMap<String, String> login(User user) {
|
||||
UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken(user.getUsername(), user.getPasswd());
|
||||
Authentication authentication = authenticationManager.authenticate(usernamePasswordAuthenticationToken);
|
||||
if (Objects.isNull(authentication)) {
|
||||
throw new RuntimeException("Login failed");
|
||||
}
|
||||
|
||||
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
|
||||
String userId = loginUser.getUser().getId().toString();
|
||||
String jwt = JwtUtil.createJWT(userId);
|
||||
|
||||
HashMap<String, String> hashMap = new HashMap<>();
|
||||
hashMap.put("token", jwt);
|
||||
|
||||
redisCache.setCacheObject("login:" + userId, loginUser);
|
||||
|
||||
return hashMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logout() {
|
||||
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
||||
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
|
||||
|
||||
Long userId = loginUser.getUser().getId();
|
||||
redisCache.deleteObject("login:" + userId);
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.cfive.pinnacle.service.impl;
|
||||
package com.cfive.pinnacle.service.permission.impl;
|
||||
|
||||
import com.cfive.pinnacle.entity.Menu;
|
||||
import com.cfive.pinnacle.mapper.MenuMapper;
|
||||
import com.cfive.pinnacle.service.IMenuService;
|
||||
import com.cfive.pinnacle.entity.permission.Menu;
|
||||
import com.cfive.pinnacle.mapper.permission.MenuMapper;
|
||||
import com.cfive.pinnacle.service.permission.IMenuService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.cfive.pinnacle.service.impl;
|
||||
package com.cfive.pinnacle.service.permission.impl;
|
||||
|
||||
import com.cfive.pinnacle.entity.OperationLog;
|
||||
import com.cfive.pinnacle.mapper.OperationLogMapper;
|
||||
import com.cfive.pinnacle.service.IOperationLogService;
|
||||
import com.cfive.pinnacle.entity.permission.OperationLog;
|
||||
import com.cfive.pinnacle.mapper.permission.OperationLogMapper;
|
||||
import com.cfive.pinnacle.service.permission.IOperationLogService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.cfive.pinnacle.service.impl;
|
||||
package com.cfive.pinnacle.service.permission.impl;
|
||||
|
||||
import com.cfive.pinnacle.entity.Operation;
|
||||
import com.cfive.pinnacle.mapper.OperationMapper;
|
||||
import com.cfive.pinnacle.service.IOperationService;
|
||||
import com.cfive.pinnacle.entity.permission.Operation;
|
||||
import com.cfive.pinnacle.mapper.permission.OperationMapper;
|
||||
import com.cfive.pinnacle.service.permission.IOperationService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.cfive.pinnacle.service.impl;
|
||||
package com.cfive.pinnacle.service.permission.impl;
|
||||
|
||||
import com.cfive.pinnacle.entity.PowerRole;
|
||||
import com.cfive.pinnacle.mapper.PowerRoleMapper;
|
||||
import com.cfive.pinnacle.service.IPowerRoleService;
|
||||
import com.cfive.pinnacle.entity.permission.PowerRole;
|
||||
import com.cfive.pinnacle.mapper.permission.PowerRoleMapper;
|
||||
import com.cfive.pinnacle.service.permission.IPowerRoleService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.cfive.pinnacle.service.impl;
|
||||
package com.cfive.pinnacle.service.permission.impl;
|
||||
|
||||
import com.cfive.pinnacle.entity.Power;
|
||||
import com.cfive.pinnacle.mapper.PowerMapper;
|
||||
import com.cfive.pinnacle.service.IPowerService;
|
||||
import com.cfive.pinnacle.entity.permission.Power;
|
||||
import com.cfive.pinnacle.mapper.permission.PowerMapper;
|
||||
import com.cfive.pinnacle.service.permission.IPowerService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.cfive.pinnacle.service.impl;
|
||||
package com.cfive.pinnacle.service.permission.impl;
|
||||
|
||||
import com.cfive.pinnacle.entity.PowerType;
|
||||
import com.cfive.pinnacle.mapper.PowerTypeMapper;
|
||||
import com.cfive.pinnacle.service.IPowerTypeService;
|
||||
import com.cfive.pinnacle.entity.permission.PowerType;
|
||||
import com.cfive.pinnacle.mapper.permission.PowerTypeMapper;
|
||||
import com.cfive.pinnacle.service.permission.IPowerTypeService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.cfive.pinnacle.service.permission.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.cfive.pinnacle.entity.User;
|
||||
import com.cfive.pinnacle.entity.permission.LoginUser;
|
||||
import com.cfive.pinnacle.service.IUserService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@Service
|
||||
public class UserDetailsServiceImpl implements UserDetailsService {
|
||||
private IUserService userService;
|
||||
|
||||
@Autowired
|
||||
public void setUserService(IUserService userService) {
|
||||
this.userService = userService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
|
||||
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(User::getUsername, username);
|
||||
User user = userService.getOne(wrapper);
|
||||
if (Objects.isNull(user)) {
|
||||
throw new UsernameNotFoundException("Username not found in database");
|
||||
}
|
||||
return new LoginUser(user);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user