| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- const Response = require('../util/response');
- const jwt = require('jsonwebtoken');
- class AuthController{
- static processIDToken(ctx){
- const query = ctx.query;
- const {id_token} = query;
- if(!id_token){
- ctx.body = Response.failed("非法请求!")
- }else{
- jwt.verify(id_token, 'SEEC-1919810-OIDC-114514', (err, authData) => {
- if(err) {
- console.log("err:", err);
- ctx.redirect("/error");
- }
- else {
- const { iss, sub, aud, auth_time, iat, exp} = authData;
- if(!iss || !sub || !aud || !auth_time || !iat || !exp){
- ctx.redirect("/error");
- }
- else if(iss !== "http://localhost" || aud!=='seec-portal' ){
- ctx.redirect("/error");
- }
- else{
- let claims = sub.split('%26');
- let origin_path = ctx.cookies.get('origin_path');
- let user = {
- id: parseInt(claims[0]),
- name: claims[1],
- phone: claims[2]
- };
- let my_token = jwt.sign(
- user,'seec-portal',{ expiresIn: '1day' }
- );
- console.log('ctx', ctx);
- // console.log('$cookies', ctx.app.$cookies);
- // ctx.res.setHeader("Access-Control-Allow-Origin", "http://localhost:3000");
- // ctx.res.setHeader("Access-Control-Allow-Credentials", true);
- // ctx.cookies.user = user;
- // ctx.cookies.token = my_token;
- //
- // console.log("origin_path", origin_path)
- //
- // ctx.redirect(origin_path);
- let url = '/setToken?origin_path=' + origin_path + '&token=' + my_token + '&id=' + user.id + '&name=' + user.name + '&phone=' + user.phone;
- // store.commit("saveUser", user);
- // store.commit("saveToken", my_token);
- ctx.redirect(url);
- }
- }
- });
- }
- }
- static authenticate(ctx){
- const query = ctx.query;
- const {path} = query;
- let return_uri = encodeURIComponent("http://localhost:8000/api/receiveIDToken");
- let url = 'http://localhost:3000/api/interaction?'+
- 'client_id='+ 'seec-portal' +
- '&scope=openid' +
- '&redirect_uri=' + return_uri +
- '&response_type=code';
- // ctx.cookies.set("origin_path", path);
- console.log("redirect to " + url);
- return ctx.redirect(url);
- }
- }
- module.exports = AuthController;
|