Add clear button
This commit is contained in:
parent
3199cfd8dd
commit
a470c82ff6
|
@ -21,7 +21,7 @@ export function launchLogin(url: string) {
|
||||||
response_type: "code",
|
response_type: "code",
|
||||||
client_id: configuration.oauth2.client.id,
|
client_id: configuration.oauth2.client.id,
|
||||||
redirect_uri: url,
|
redirect_uri: url,
|
||||||
scope: "openid profile",
|
scope: configuration.oauth2.client.scopes,
|
||||||
state
|
state
|
||||||
})
|
})
|
||||||
// Did not think this would work lmao
|
// Did not think this would work lmao
|
||||||
|
@ -97,16 +97,18 @@ export async function getUserInfo(id: string) {
|
||||||
userInfo = userInfoCache.get(tokenInfo.owner)
|
userInfo = userInfoCache.get(tokenInfo.owner)
|
||||||
else {
|
else {
|
||||||
let userInfoRequest = await fetchUserInfo(tokenInfo.token)
|
let userInfoRequest = await fetchUserInfo(tokenInfo.token)
|
||||||
|
console.log(`userinforequest with ${userInfoRequest.status}`)
|
||||||
if (!userInfoRequest.ok) {
|
if (!userInfoRequest.ok) {
|
||||||
// assume that token has expired.
|
// assume that token has expired.
|
||||||
// try fetching a new one
|
// try fetching a new one
|
||||||
|
console.log("refresh token", tokenInfo.refreshToken)
|
||||||
if (!tokenInfo.refreshToken) return // no refresh token. back out
|
if (!tokenInfo.refreshToken) return // no refresh token. back out
|
||||||
let token = await getNewToken({
|
let token = await getNewToken({
|
||||||
grant_type: "refresh_token",
|
grant_type: "refresh_token",
|
||||||
refresh_token: tokenInfo.refreshToken
|
refresh_token: tokenInfo.refreshToken
|
||||||
})
|
})
|
||||||
|
console.log("new token", token)
|
||||||
|
console.log("new reftoken", token?.refresh_token)
|
||||||
if (!token) return // refresh failed. back out
|
if (!token) return // refresh failed. back out
|
||||||
await prisma.token.update({
|
await prisma.token.update({
|
||||||
where: { id },
|
where: { id },
|
||||||
|
@ -139,7 +141,7 @@ export async function getUserInfo(id: string) {
|
||||||
|
|
||||||
// cache userinfo
|
// cache userinfo
|
||||||
userInfoCache.set(tokenInfo.owner, userInfo)
|
userInfoCache.set(tokenInfo.owner, userInfo)
|
||||||
setTimeout(() => userInfoCache.delete(tokenInfo.owner), 60*60*1000)
|
setTimeout(() => userInfoCache.delete(tokenInfo.owner), 15*60*1000)
|
||||||
}
|
}
|
||||||
|
|
||||||
return { ...userInfo, identifier: userInfo[configuration.userinfo.identifier] } as User
|
return { ...userInfo, identifier: userInfo[configuration.userinfo.identifier] } as User
|
||||||
|
@ -179,7 +181,7 @@ export async function getRequestUser(request: Request, cookies: Cookies) {
|
||||||
// could cache this, but lazy
|
// could cache this, but lazy
|
||||||
|
|
||||||
let userInfo = await (await fetchUserInfo(tokens.access_token)).json() as User
|
let userInfo = await (await fetchUserInfo(tokens.access_token)).json() as User
|
||||||
|
console.log(tokens.refresh_token)
|
||||||
// create a new token
|
// create a new token
|
||||||
let newToken = await prisma.token.create({
|
let newToken = await prisma.token.create({
|
||||||
data: {
|
data: {
|
||||||
|
|
|
@ -16,18 +16,20 @@ export async function load({ request, parent, url }) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export const actions = {
|
export const actions = {
|
||||||
set: async ({request, cookies}) => {
|
default: async ({request, cookies}) => {
|
||||||
let user = await getRequestUser(request, cookies);
|
let user = await getRequestUser(request, cookies);
|
||||||
if (!user)
|
if (!user)
|
||||||
return fail(401, {error: "unauthenticated"})
|
return fail(401, {error: "unauthenticated"})
|
||||||
|
|
||||||
let submission = await request.formData();
|
let submission = await request.formData();
|
||||||
let newAvatar = submission.get("newAvatar")
|
let newAvatar = undefined
|
||||||
|
if (submission.get("action") != "Clear") {
|
||||||
|
newAvatar = submission.get("newAvatar")
|
||||||
if (newAvatar !== undefined && !(newAvatar instanceof File))
|
if (newAvatar !== undefined && !(newAvatar instanceof File))
|
||||||
return fail(400, {success: false, error: "incorrect entry type"})
|
return fail(400, {success: false, error: "incorrect entry type"})
|
||||||
if (!configuration.allowed_types.includes(newAvatar.type))
|
if (!configuration.allowed_types.includes(newAvatar.type))
|
||||||
return fail(400, {success: false, error: `allowed types does not include ${newAvatar.type}`})
|
return fail(400, {success: false, error: `allowed types does not include ${newAvatar.type}`})
|
||||||
|
}
|
||||||
let time = await setNewAvatar(user.sub, newAvatar)
|
let time = await setNewAvatar(user.sub, newAvatar)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -35,6 +37,7 @@ export const actions = {
|
||||||
message: Object.entries(time)
|
message: Object.entries(time)
|
||||||
.map(([res, time]) => `${res}x${res} took ${time}ms to render`)
|
.map(([res, time]) => `${res}x${res} took ${time}ms to render`)
|
||||||
.join("\n")
|
.join("\n")
|
||||||
|
|| "No timing information available"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -36,9 +36,6 @@
|
||||||
form > input[type="file"]::file-selector-button {
|
form > input[type="file"]::file-selector-button {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
form > label {
|
|
||||||
flex-shrink: 0;
|
|
||||||
}
|
|
||||||
summary::marker {
|
summary::marker {
|
||||||
content: ""
|
content: ""
|
||||||
}
|
}
|
||||||
|
@ -74,10 +71,10 @@
|
||||||
</div>
|
</div>
|
||||||
</details>
|
</details>
|
||||||
</p>
|
</p>
|
||||||
<form method="post" enctype="multipart/form-data" action="?/set">
|
<form method="post" enctype="multipart/form-data">
|
||||||
<label for="newAvatar">Set a new avatar ➜</label>
|
|
||||||
<input type="file" bind:files={files} accept={data.allowedImageTypes.join(",")} name="newAvatar">
|
<input type="file" bind:files={files} accept={data.allowedImageTypes.join(",")} name="newAvatar">
|
||||||
<input type="submit" value="Upload">
|
<input type="submit" name="action" value="Upload">
|
||||||
|
<input type="submit" name="action" value="Clear">
|
||||||
</form>
|
</form>
|
||||||
{#if form}
|
{#if form}
|
||||||
{#if form.success}
|
{#if form.success}
|
||||||
|
|
Loading…
Reference in a new issue