Basic autologin OK
This commit is contained in:
parent
0bf1be5c40
commit
aa43842601
|
@ -29,7 +29,8 @@ export class LdapAuth implements Auth {
|
|||
username,
|
||||
displayName: search.searchEntries[0].displayName as string,
|
||||
domain: this.domain,
|
||||
pwdLastSet: search.searchEntries[0].pwdLastSet as string
|
||||
pwdLastSet: search.searchEntries[0].pwdLastSet as string,
|
||||
isAdmin: false
|
||||
}
|
||||
} catch (error: any) {
|
||||
console.log('Error:', error)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import { PaFirewallService } from '../services/PaFirewallService'
|
||||
import { db } from '../prisma'
|
||||
import { LoginResult } from '../schemas/LoginResult'
|
||||
|
||||
export async function autoLogin({
|
||||
username,
|
||||
|
@ -9,12 +10,20 @@ export async function autoLogin({
|
|||
username: string
|
||||
domain: string
|
||||
ip: string
|
||||
}) {
|
||||
}): Promise<LoginResult> {
|
||||
console.log('AutoLogin?', username, domain, ip)
|
||||
|
||||
const paHosts = await db.paHost.findMany()
|
||||
|
||||
const pa = new PaFirewallService(paHosts[0].ip, paHosts[0].key)
|
||||
|
||||
return await pa.login({ username, ip, domain })
|
||||
await pa.login({ username, ip, domain })
|
||||
|
||||
return {
|
||||
username,
|
||||
displayName: username,
|
||||
domain,
|
||||
pwdLastSet: '',
|
||||
isAdmin: false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,5 +2,6 @@ export type AuthResult = {
|
|||
username: string
|
||||
displayName: string
|
||||
domain: string
|
||||
pwdLastSet: string
|
||||
pwdLastSet?: string
|
||||
isAdmin?: boolean
|
||||
}
|
||||
|
|
|
@ -2,7 +2,8 @@ export type JwtPayload = {
|
|||
username: string
|
||||
displayName: string
|
||||
domain: string
|
||||
pwdLastSet: string
|
||||
pwdLastSet?: string
|
||||
isAdmin?: boolean
|
||||
iat?: Date // issued at
|
||||
exp?: Date // expires at
|
||||
}
|
||||
|
|
|
@ -8,15 +8,20 @@ import { logout } from './lib/logout'
|
|||
import { PaFirewallService } from './services/PaFirewallService'
|
||||
import { jwtService } from './lib/jwt'
|
||||
import { autoLogin } from './lib/autoLogin'
|
||||
import { JwtPayload } from './schemas/JwtPayload'
|
||||
|
||||
// Created for each request
|
||||
function createContext({ req, res }: trpcExpress.CreateExpressContextOptions) {
|
||||
const ip = getIpFromRequest(req)
|
||||
const token = req.headers.authorization?.split(' ')[1]
|
||||
|
||||
const jwtPayload = token ? jwtService.verifyToken(token) : null
|
||||
let jwtPayload: JwtPayload | null = null
|
||||
|
||||
console.log(jwtPayload)
|
||||
try {
|
||||
jwtPayload = token ? jwtService.verifyToken(token) : null
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
}
|
||||
|
||||
return { ip, user: jwtPayload }
|
||||
}
|
||||
|
@ -51,7 +56,7 @@ export const appRouter = t.router({
|
|||
|
||||
const { username, domain } = ctx.user
|
||||
|
||||
return await autoLogin({ username, domain: ctx.ip, ip: domain })
|
||||
return await autoLogin({ username, domain: domain, ip: ctx.ip })
|
||||
}),
|
||||
|
||||
addFirewall: t.procedure
|
||||
|
|
|
@ -61,6 +61,7 @@ async function onLogout() {
|
|||
const success = await trpc.logout.mutate()
|
||||
|
||||
localStorage.removeItem('token')
|
||||
localStorage.removeItem('autoLogin')
|
||||
|
||||
if (success) {
|
||||
alert('Você foi desconectado.')
|
||||
|
|
|
@ -61,7 +61,7 @@
|
|||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, computed } from 'vue'
|
||||
import { ref, computed, onMounted, watch } from 'vue'
|
||||
import { trpc } from '../trpc'
|
||||
import { VForm } from 'vuetify/lib/components/index.mjs'
|
||||
import LoginErrorAlert from './LoginErrorAlert.vue'
|
||||
|
@ -75,6 +75,31 @@ const username = ref('')
|
|||
const password = ref('')
|
||||
|
||||
const autoLogin = ref(false)
|
||||
|
||||
watch(autoLogin, value => {
|
||||
localStorage.setItem('autoLogin', value ? 'true' : 'false')
|
||||
})
|
||||
|
||||
onMounted(async () => {
|
||||
autoLogin.value = localStorage.getItem('autoLogin') === 'true'
|
||||
|
||||
if (autoLogin.value && token.value) {
|
||||
try {
|
||||
loading.value = true
|
||||
|
||||
const result = await trpc.autoLogin.mutate()
|
||||
|
||||
console.log(result)
|
||||
|
||||
emit('login', result)
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
const showPassword = ref(false)
|
||||
|
||||
const loading = ref(false)
|
||||
|
|
Loading…
Reference in New Issue
Block a user