1
0
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:
2023-05-05 00:17:11 +08:00
parent c3bde66b33
commit e5317da56d
89 changed files with 1028 additions and 783 deletions

View File

@@ -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> {
}

View File

@@ -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> {
}

View File

@@ -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> {
}

View File

@@ -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> {
}

View File

@@ -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 {
}

View File

@@ -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 {
}

View File

@@ -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 {
}

View File

@@ -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 {
}

View File

@@ -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;
/**

View File

@@ -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;
/**

View File

@@ -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();
}

View File

@@ -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;
/**

View File

@@ -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;
/**

View File

@@ -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;
/**

View File

@@ -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;
/**

View File

@@ -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;
/**

View File

@@ -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;
/**

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);
}
}