34 lines
1.0 KiB
TypeScript
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');
|
|
}
|
|
}
|
|
}
|