Merge backend changes required for UI state. #3
@ -57,7 +57,9 @@ func GoogleCallback(ctx *gin.Context) {
|
|||||||
|
|
||||||
// Logout removes the token from the user's browser. Effectively "logging them out." Routes that
|
// Logout removes the token from the user's browser. Effectively "logging them out." Routes that
|
||||||
// require authentication will require the user to sign back in before accessing them again.
|
// require authentication will require the user to sign back in before accessing them again.
|
||||||
|
// This route will direct the user back to the home page.
|
||||||
func Logout(ctx *gin.Context) {
|
func Logout(ctx *gin.Context) {
|
||||||
// TODO: Use same values as the GoogleCallback function
|
// TODO: Use same values as the GoogleCallback function
|
||||||
ctx.SetCookie("jwt_token", "", -1, "/", "localhost", false, true)
|
ctx.SetCookie("jwt_token", "", -1, "/", "localhost", false, true)
|
||||||
|
ctx.Redirect(http.StatusSeeOther, "/v1/web/home")
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,8 +6,10 @@ import "github.com/haydenhargreaves/Potion/internal/domain/user"
|
|||||||
templ userDetailsSection(user domain.User) {
|
templ userDetailsSection(user domain.User) {
|
||||||
<section class="w-full flex flex-col justify-center my-8 py-4 border-b border-gray-300">
|
<section class="w-full flex flex-col justify-center my-8 py-4 border-b border-gray-300">
|
||||||
<div class="w-full p-4 md:p-8 flex items-center gap-x-8">
|
<div class="w-full p-4 md:p-8 flex items-center gap-x-8">
|
||||||
<img class="w-24 md:w-32 border-2 border-blue-500 rounded-full shadow-blue-500 shadow select-none" src={
|
<img
|
||||||
user.ImageUrl } />
|
class="w-24 md:w-32 border-2 border-blue-500 rounded-full shadow-blue-500 shadow select-none"
|
||||||
|
src={ user.ImageUrl }
|
||||||
|
/>
|
||||||
<div class="">
|
<div class="">
|
||||||
<h1 class="text-md md:text-2xl font-semibold">{ user.Name }</h1>
|
<h1 class="text-md md:text-2xl font-semibold">{ user.Name }</h1>
|
||||||
<p class="text-xs md:text-sm">{ user.Email }</p>
|
<p class="text-xs md:text-sm">{ user.Email }</p>
|
||||||
@ -18,10 +20,12 @@ templ userDetailsSection(user domain.User) {
|
|||||||
|
|
||||||
templ logoutSection() {
|
templ logoutSection() {
|
||||||
<section class="w-full flex flex-col justify-center items-center py-8 border-t border-gray-300">
|
<section class="w-full flex flex-col justify-center items-center py-8 border-t border-gray-300">
|
||||||
<button
|
<a
|
||||||
class="border border-red-500 text-red-500 w-9/10 md:w-1/3 py-2 rounded-lg hover:cursor-pointer hover:bg-red-100 duration-300">
|
href="/v1/api/auth/logout"
|
||||||
|
class="text-center border border-red-500 text-red-500 w-9/10 md:w-1/3 py-2 rounded-lg hover:cursor-pointer hover:bg-red-100 duration-300"
|
||||||
|
>
|
||||||
Logout
|
Logout
|
||||||
</button>
|
</a>
|
||||||
</section>
|
</section>
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,7 +33,8 @@ templ ProfilePage(user domain.User) {
|
|||||||
@components.Navbar(" profile")
|
@components.Navbar(" profile")
|
||||||
<div class="w-full h-screen flex justify-center">
|
<div class="w-full h-screen flex justify-center">
|
||||||
<div
|
<div
|
||||||
class="mx-2 md:mx-0 w-full md:w-1/2 md:pt-14 border-l border-r border-gray-300 bg-white flex flex-col justify-between">
|
class="mx-2 md:mx-0 w-full md:w-1/2 md:pt-14 border-l border-r border-gray-300 bg-white flex flex-col justify-between"
|
||||||
|
>
|
||||||
@userDetailsSection(user)
|
@userDetailsSection(user)
|
||||||
@logoutSection()
|
@logoutSection()
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -37,10 +37,9 @@ func userDetailsSection(user domain.User) templ.Component {
|
|||||||
return templ_7745c5c3_Err
|
return templ_7745c5c3_Err
|
||||||
}
|
}
|
||||||
var templ_7745c5c3_Var2 string
|
var templ_7745c5c3_Var2 string
|
||||||
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(
|
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(user.ImageUrl)
|
||||||
user.ImageUrl)
|
|
||||||
if templ_7745c5c3_Err != nil {
|
if templ_7745c5c3_Err != nil {
|
||||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/templates/pages/profile.templ`, Line: 10, Col: 19}
|
return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/templates/pages/profile.templ`, Line: 11, Col: 23}
|
||||||
}
|
}
|
||||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
|
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
|
||||||
if templ_7745c5c3_Err != nil {
|
if templ_7745c5c3_Err != nil {
|
||||||
@ -53,7 +52,7 @@ func userDetailsSection(user domain.User) templ.Component {
|
|||||||
var templ_7745c5c3_Var3 string
|
var templ_7745c5c3_Var3 string
|
||||||
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(user.Name)
|
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(user.Name)
|
||||||
if templ_7745c5c3_Err != nil {
|
if templ_7745c5c3_Err != nil {
|
||||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/templates/pages/profile.templ`, Line: 12, Col: 63}
|
return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/templates/pages/profile.templ`, Line: 14, Col: 61}
|
||||||
}
|
}
|
||||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
|
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
|
||||||
if templ_7745c5c3_Err != nil {
|
if templ_7745c5c3_Err != nil {
|
||||||
@ -66,7 +65,7 @@ func userDetailsSection(user domain.User) templ.Component {
|
|||||||
var templ_7745c5c3_Var4 string
|
var templ_7745c5c3_Var4 string
|
||||||
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(user.Email)
|
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(user.Email)
|
||||||
if templ_7745c5c3_Err != nil {
|
if templ_7745c5c3_Err != nil {
|
||||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/templates/pages/profile.templ`, Line: 13, Col: 48}
|
return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/templates/pages/profile.templ`, Line: 15, Col: 46}
|
||||||
}
|
}
|
||||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
|
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
|
||||||
if templ_7745c5c3_Err != nil {
|
if templ_7745c5c3_Err != nil {
|
||||||
@ -101,7 +100,7 @@ func logoutSection() templ.Component {
|
|||||||
templ_7745c5c3_Var5 = templ.NopComponent
|
templ_7745c5c3_Var5 = templ.NopComponent
|
||||||
}
|
}
|
||||||
ctx = templ.ClearChildren(ctx)
|
ctx = templ.ClearChildren(ctx)
|
||||||
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<section class=\"w-full flex flex-col justify-center items-center py-8 border-t border-gray-300\"><button class=\"border border-red-500 text-red-500 w-9/10 md:w-1/3 py-2 rounded-lg hover:cursor-pointer hover:bg-red-100 duration-300\">Logout</button></section>")
|
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<section class=\"w-full flex flex-col justify-center items-center py-8 border-t border-gray-300\"><a href=\"/v1/api/auth/logout\" class=\"text-center border border-red-500 text-red-500 w-9/10 md:w-1/3 py-2 rounded-lg hover:cursor-pointer hover:bg-red-100 duration-300\">Logout</a></section>")
|
||||||
if templ_7745c5c3_Err != nil {
|
if templ_7745c5c3_Err != nil {
|
||||||
return templ_7745c5c3_Err
|
return templ_7745c5c3_Err
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user