Commit 6c08913b by HoMeTown

feat: login登录

parent 67fc813e
import http from '@/utils/request'
/**
* 登录
* @returns
*/
export function fetchLoginByUid(uid: string) {
return http.post('/user/api/login/mobile/v1/guest/login', {
userId: uid,
})
}
......@@ -2,6 +2,7 @@
import type { ReactNode } from 'react'
import React, { createContext, useContext, useState } from 'react'
import { useLocalStorageState } from 'ahooks'
import { fetchLoginByUid } from '@/api/common'
interface AuthContextType {
isLoggedIn: boolean
......@@ -19,7 +20,7 @@ interface AuthProviderProps {
}
export const AuthProvider: React.FC<AuthProviderProps> = ({ children }) => {
const [token] = useLocalStorageState<string | undefined>(
const [token, setToken] = useLocalStorageState<string | undefined>(
'__TOKEN__',
{
defaultValue: '',
......@@ -29,10 +30,14 @@ export const AuthProvider: React.FC<AuthProviderProps> = ({ children }) => {
const [showLoginModal, setShowLoginModal] = useState(false)
const [showLoginTip, setShowLoginTip] = useState(!token)
const login = () => {
const login = async () => {
const res = await fetchLoginByUid('123')
if (res.data) {
setToken(res.data.token)
setIsLoggedIn(true)
setShowLoginModal(false)
}
}
const logout = () => {
setIsLoggedIn(false)
......
import React from 'react'
import { Button, Link, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader } from '@nextui-org/react'
import { useAuth } from '@/auth/AuthContext'
interface LoginModalProps {
isOpen: boolean
......@@ -7,6 +8,11 @@ interface LoginModalProps {
}
export const LoginModal: React.FC<LoginModalProps> = ({ isOpen, onClose }) => {
const { login } = useAuth()
const handleLogin = () => {
login()
}
return (
<Modal backdrop="blur" isOpen={isOpen} onClose={onClose}>
<ModalContent>
......@@ -31,7 +37,7 @@ export const LoginModal: React.FC<LoginModalProps> = ({ isOpen, onClose }) => {
<Button onPress={onClose}>
再想想
</Button>
<Button color="primary" onPress={onClose}>
<Button color="primary" onPress={handleLogin}>
同意
</Button>
</ModalFooter>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment