oauth_nest_demo/src/lark/lark.controller.ts

34 lines
1.0 KiB
TypeScript

import { Controller, Get, Query, Res } from '@nestjs/common';
import { LarkService } from './lark.service';
import { Response } from 'express';
import { Public } from '../auth/decorators/public.decorator';
@Controller('lark')
export class LarkController {
constructor(private readonly larkService: LarkService) { }
@Get('login')
@Public()
async login(@Query('redirectUri') redirectUri: string, @Res() res: Response) {
const loginUrl = await this.larkService.getLoginUrl(redirectUri);
return res.redirect(loginUrl);
}
@Get('callback')
@Public()
async callback(@Query('code') code: string, @Res() res: Response) {
if (!code) {
return res.status(400).send('Authorization code is missing');
}
const tokenData = await this.larkService.getAccessToken(code);
if (tokenData && tokenData.code === 0) {
const user = tokenData.data;
return res.json({ message: 'Login successful', user });
} else {
return res.status(400).send('Failed to retrieve access token');
}
}
}