refactor(api): refactor app to use pure jwts instead of cookies
cookies are no longer used
This commit is contained in:
parent
b5f5edbcc5
commit
2b233364a1
@ -1,11 +1,16 @@
|
||||
import { UseFetchOptions } from "nuxt/app";
|
||||
|
||||
const useApiFetch = async (url: string, options?: any) => {
|
||||
const at = useCookie("rockfic_cookie", {default: undefined})
|
||||
return useFetch("/api" + url, {
|
||||
method: "get",
|
||||
...options,
|
||||
})
|
||||
}
|
||||
|
||||
export default useApiFetch
|
||||
import { UseFetchOptions } from "nuxt/app";
|
||||
|
||||
const useApiFetch = async (url: string, options?: any) => {
|
||||
const at = useCookie("rockfic_cookie", { default: undefined });
|
||||
const { token } = useAuth();
|
||||
return useFetch("/api" + url, {
|
||||
method: "get",
|
||||
headers: {
|
||||
...(options?.headers || {}),
|
||||
Authorization: `Bearer ${token.value}`,
|
||||
},
|
||||
...options,
|
||||
});
|
||||
};
|
||||
|
||||
export default useApiFetch;
|
||||
|
49
server/api/auth/login.post.ts
Normal file
49
server/api/auth/login.post.ts
Normal file
@ -0,0 +1,49 @@
|
||||
import mongoose from "mongoose";
|
||||
import jwt from "jsonwebtoken";
|
||||
import { IUser, User } from "~/models/user";
|
||||
|
||||
export default eventHandler(async (event) => {
|
||||
const wrongMsg = "wrong credentials";
|
||||
let reqbody = await readBody(event);
|
||||
let user = await User.findOne({ username: reqbody.username }).exec();
|
||||
console.log("USER -> ", user);
|
||||
console.log("conn ->", mongoose.connection);
|
||||
let cok = getHeader(event, "Authorization")?.replace("Bearer ", "");
|
||||
if (!cok) {
|
||||
if (!user) {
|
||||
throw createError({ statusCode: 401, message: wrongMsg });
|
||||
}
|
||||
if (user.banned) {
|
||||
throw createError({
|
||||
statusCode: 401,
|
||||
message: "This account has been banned.",
|
||||
});
|
||||
}
|
||||
if (user.validPassword(reqbody.password)) {
|
||||
if (!user.auth.emailVerified) {
|
||||
throw createError({
|
||||
statusCode: 401,
|
||||
message:
|
||||
'Account inactive!<br><a href="/activate/resend">Resend verification</a>?',
|
||||
});
|
||||
}
|
||||
let tok = user.generateToken(useRuntimeConfig().jwt);
|
||||
// setCookie(event, "rockfic_cookie", tok);
|
||||
return {
|
||||
user,
|
||||
token: tok,
|
||||
};
|
||||
} else {
|
||||
throw createError({ statusCode: 401, message: wrongMsg });
|
||||
}
|
||||
} else {
|
||||
if (jwt.verify(cok, useRuntimeConfig().jwt)) {
|
||||
throw createError({
|
||||
statusCode: 405,
|
||||
message: "Already logged in.",
|
||||
});
|
||||
} else {
|
||||
throw createError({ statusCode: 401, message: wrongMsg });
|
||||
}
|
||||
}
|
||||
});
|
3
server/api/auth/register.post.ts
Normal file
3
server/api/auth/register.post.ts
Normal file
@ -0,0 +1,3 @@
|
||||
export default eventHandler((event) => {
|
||||
|
||||
})
|
10
server/api/auth/session.get.ts
Normal file
10
server/api/auth/session.get.ts
Normal file
@ -0,0 +1,10 @@
|
||||
export default eventHandler((event) => {
|
||||
if (event.context.currentUser) {
|
||||
return {
|
||||
token: getHeader(event, "Authorization"),
|
||||
user: event.context.currentUser,
|
||||
};
|
||||
} else {
|
||||
throw createError({ statusCode: 400, message: "unauthenticated" });
|
||||
}
|
||||
});
|
@ -1,12 +1,19 @@
|
||||
import jwt from "jsonwebtoken"
|
||||
import { User } from "~/models/user"
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
let ahead = getCookie(event, "rockfic_cookie")
|
||||
if(ahead) {
|
||||
let toktok = (jwt.verify(ahead.replace("Bearer ", ""), useRuntimeConfig().jwt) as jwt.JwtPayload)
|
||||
console.log(toktok)
|
||||
let user = await User.findById(toktok.id as number).exec()
|
||||
event.context.currentUser = user
|
||||
}
|
||||
})
|
||||
import jwt from "jsonwebtoken";
|
||||
import { User } from "~/models/user";
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
let ahead = (getHeaders(event).authorization || "")?.replace("Bearer ", "");
|
||||
console.log(`=------------------------${event.path}`);
|
||||
console.log("h", getHeaders(event));
|
||||
console.log(JSON.stringify(ahead));
|
||||
if (ahead) {
|
||||
console.log("ahead", ahead);
|
||||
let toktok = jwt.verify(
|
||||
ahead,
|
||||
// ahead.replace("Bearer ", ""),
|
||||
useRuntimeConfig().jwt,
|
||||
) as jwt.JwtPayload;
|
||||
let user = await User.findById(toktok.id as number).exec();
|
||||
event.context.currentUser = user;
|
||||
}
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user