mirror of
				https://github.com/whyour/qinglong.git
				synced 2025-11-04 11:16:07 +08:00 
			
		
		
		
	添加通知api
This commit is contained in:
		
							parent
							
								
									3ddaf41e27
								
							
						
					
					
						commit
						aed08b0f59
					
				| 
						 | 
				
			
			@ -86,7 +86,7 @@ export default (app: Router) => {
 | 
			
		|||
          code: 200,
 | 
			
		||||
          data: {
 | 
			
		||||
            username: authInfo.username,
 | 
			
		||||
            twoFactorActived: authInfo.twoFactorActived,
 | 
			
		||||
            twoFactorActivated: authInfo.twoFactorActivated,
 | 
			
		||||
          },
 | 
			
		||||
        });
 | 
			
		||||
      } catch (e) {
 | 
			
		||||
| 
						 | 
				
			
			@ -182,4 +182,34 @@ export default (app: Router) => {
 | 
			
		|||
      }
 | 
			
		||||
    },
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  route.get(
 | 
			
		||||
    '/user/notification',
 | 
			
		||||
    async (req: Request, res: Response, next: NextFunction) => {
 | 
			
		||||
      const logger: Logger = Container.get('logger');
 | 
			
		||||
      try {
 | 
			
		||||
        const authService = Container.get(AuthService);
 | 
			
		||||
        const data = await authService.getNotificationMode();
 | 
			
		||||
        res.send({ code: 200, data });
 | 
			
		||||
      } catch (e) {
 | 
			
		||||
        logger.error('🔥 error: %o', e);
 | 
			
		||||
        return next(e);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  route.put(
 | 
			
		||||
    '/user/notification',
 | 
			
		||||
    async (req: Request, res: Response, next: NextFunction) => {
 | 
			
		||||
      const logger: Logger = Container.get('logger');
 | 
			
		||||
      try {
 | 
			
		||||
        const authService = Container.get(AuthService);
 | 
			
		||||
        const data = await authService.updateNotificationMode(req.body);
 | 
			
		||||
        res.send({ code: 200, data });
 | 
			
		||||
      } catch (e) {
 | 
			
		||||
        logger.error('🔥 error: %o', e);
 | 
			
		||||
        return next(e);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  );
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,7 +47,7 @@ export default class AuthService {
 | 
			
		|||
        lastlogon,
 | 
			
		||||
        lastip,
 | 
			
		||||
        lastaddr,
 | 
			
		||||
        twoFactorActived,
 | 
			
		||||
        twoFactorActivated,
 | 
			
		||||
      } = content;
 | 
			
		||||
 | 
			
		||||
      if (
 | 
			
		||||
| 
						 | 
				
			
			@ -72,7 +72,7 @@ export default class AuthService {
 | 
			
		|||
 | 
			
		||||
      const { ip, address } = await getNetIp(req);
 | 
			
		||||
      if (username === cUsername && password === cPassword) {
 | 
			
		||||
        if (twoFactorActived && needTwoFactor) {
 | 
			
		||||
        if (twoFactorActivated && needTwoFactor) {
 | 
			
		||||
          this.updateAuthInfo(content, {
 | 
			
		||||
            isTwoFactorChecking: true,
 | 
			
		||||
          });
 | 
			
		||||
| 
						 | 
				
			
			@ -83,7 +83,7 @@ export default class AuthService {
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
        const data = createRandomString(50, 100);
 | 
			
		||||
        const expiration = twoFactorActived ? 30 : 3;
 | 
			
		||||
        const expiration = twoFactorActivated ? 30 : 3;
 | 
			
		||||
        let token = jwt.sign({ data }, config.secret as any, {
 | 
			
		||||
          expiresIn: 60 * 60 * 24 * expiration,
 | 
			
		||||
          algorithm: 'HS384',
 | 
			
		||||
| 
						 | 
				
			
			@ -206,7 +206,7 @@ export default class AuthService {
 | 
			
		|||
      secret: authInfo.twoFactorSecret,
 | 
			
		||||
    });
 | 
			
		||||
    if (isValid) {
 | 
			
		||||
      this.updateAuthInfo(authInfo, { twoFactorActived: true });
 | 
			
		||||
      this.updateAuthInfo(authInfo, { twoFactorActivated: true });
 | 
			
		||||
    }
 | 
			
		||||
    return isValid;
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			@ -236,7 +236,7 @@ export default class AuthService {
 | 
			
		|||
  public deactiveTwoFactor() {
 | 
			
		||||
    const authInfo = this.getAuthInfo();
 | 
			
		||||
    this.updateAuthInfo(authInfo, {
 | 
			
		||||
      twoFactorActived: false,
 | 
			
		||||
      twoFactorActivated: false,
 | 
			
		||||
      twoFactorSecret: '',
 | 
			
		||||
    });
 | 
			
		||||
    return true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -494,7 +494,7 @@ main() {
 | 
			
		|||
        ;;
 | 
			
		||||
    resettfa)
 | 
			
		||||
        echo -e "## 开始执行... $begin_time\n" >>$log_path
 | 
			
		||||
        auth_value=$(cat $file_auth_user | jq '.twoFactorActived =false' -c)
 | 
			
		||||
        auth_value=$(cat $file_auth_user | jq '.twoFactorActivated =false' -c)
 | 
			
		||||
        echo -e "禁用两步验证成功 \n $auth_value" >>$log_path
 | 
			
		||||
        echo "$auth_value" >$file_auth_user
 | 
			
		||||
        ;;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,7 @@ const { Title, Link } = Typography;
 | 
			
		|||
 | 
			
		||||
const SecuritySettings = ({ user, userChange }: any) => {
 | 
			
		||||
  const [loading, setLoading] = useState(false);
 | 
			
		||||
  const [twoFactorActived, setTwoFactorActived] = useState<boolean>();
 | 
			
		||||
  const [twoFactorActivated, setTwoFactorActivated] = useState<boolean>();
 | 
			
		||||
  const [twoFactoring, setTwoFactoring] = useState(false);
 | 
			
		||||
  const [twoFactorInfo, setTwoFactorInfo] = useState<any>();
 | 
			
		||||
  const [code, setCode] = useState<string>();
 | 
			
		||||
| 
						 | 
				
			
			@ -32,7 +32,7 @@ const SecuritySettings = ({ user, userChange }: any) => {
 | 
			
		|||
  };
 | 
			
		||||
 | 
			
		||||
  const activeOrDeactiveTwoFactor = () => {
 | 
			
		||||
    if (twoFactorActived) {
 | 
			
		||||
    if (twoFactorActivated) {
 | 
			
		||||
      deactiveTowFactor();
 | 
			
		||||
    } else {
 | 
			
		||||
      getTwoFactorInfo();
 | 
			
		||||
| 
						 | 
				
			
			@ -45,7 +45,7 @@ const SecuritySettings = ({ user, userChange }: any) => {
 | 
			
		|||
      .put(`${config.apiPrefix}user/two-factor/deactive`)
 | 
			
		||||
      .then((data: any) => {
 | 
			
		||||
        if (data.data) {
 | 
			
		||||
          setTwoFactorActived(false);
 | 
			
		||||
          setTwoFactorActivated(false);
 | 
			
		||||
          userChange();
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
| 
						 | 
				
			
			@ -62,7 +62,7 @@ const SecuritySettings = ({ user, userChange }: any) => {
 | 
			
		|||
        if (data.data) {
 | 
			
		||||
          message.success('激活成功');
 | 
			
		||||
          setTwoFactoring(false);
 | 
			
		||||
          setTwoFactorActived(true);
 | 
			
		||||
          setTwoFactorActivated(true);
 | 
			
		||||
          userChange();
 | 
			
		||||
        } else {
 | 
			
		||||
          message.success('验证失败');
 | 
			
		||||
| 
						 | 
				
			
			@ -86,7 +86,7 @@ const SecuritySettings = ({ user, userChange }: any) => {
 | 
			
		|||
  };
 | 
			
		||||
 | 
			
		||||
  useEffect(() => {
 | 
			
		||||
    setTwoFactorActived(user && user.twoFactorActived);
 | 
			
		||||
    setTwoFactorActivated(user && user.twoFactorActivated);
 | 
			
		||||
  }, [user]);
 | 
			
		||||
 | 
			
		||||
  return twoFactoring ? (
 | 
			
		||||
| 
						 | 
				
			
			@ -198,10 +198,10 @@ const SecuritySettings = ({ user, userChange }: any) => {
 | 
			
		|||
      </div>
 | 
			
		||||
      <Button
 | 
			
		||||
        type="primary"
 | 
			
		||||
        danger={twoFactorActived}
 | 
			
		||||
        danger={twoFactorActivated}
 | 
			
		||||
        onClick={activeOrDeactiveTwoFactor}
 | 
			
		||||
      >
 | 
			
		||||
        {twoFactorActived ? '禁用' : '启用'}
 | 
			
		||||
        {twoFactorActivated ? '禁用' : '启用'}
 | 
			
		||||
      </Button>
 | 
			
		||||
    </>
 | 
			
		||||
  );
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user