#!/usr/bin/env bash
set -euo pipefail
echo "[1/8] Creating authentication..."
mkdir -p services/auth
mkdir -p hooks
mkdir -p context
cat > services/auth/auth.js <<'EOC'
import api from "../api";
export async function login(username,password){
const {data}=await api.post("/api/auth/login",{
username,
password
});
localStorage.setItem("access_token",data.access_token);
return data;
}
export async function logout(){
localStorage.removeItem("access_token");
}
export async function profile(){
const {data}=await api.get("/api/auth/me");
return data;
}
export async function refresh(){
const {data}=await api.post("/api/auth/refresh");
localStorage.setItem("access_token",data.access_token);
return data;
}
EOC
cat > context/AuthContext.jsx <<'EOC'
"use client";
import {createContext,useContext,useEffect,useState} from "react";
import * as auth from "../services/auth/auth";
const AuthContext=createContext(null);
export function AuthProvider({children}){
const [user,setUser]=useState(null);
useEffect(()=>{
auth.profile()
.then(setUser)
.catch(()=>setUser(null));
},[]);
return(