✨ Fit Hydrogen.Identity
This commit is contained in:
		@@ -2,9 +2,9 @@
 | 
				
			|||||||
<html lang="en">
 | 
					<html lang="en">
 | 
				
			||||||
  <head>
 | 
					  <head>
 | 
				
			||||||
    <meta charset="UTF-8">
 | 
					    <meta charset="UTF-8">
 | 
				
			||||||
    <link rel="icon" href="/favicon.svg">
 | 
					    <link rel="icon" type="image/xml+svg" href="/favicon.svg">
 | 
				
			||||||
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
				
			||||||
    <title>Goatplaza</title>
 | 
					    <title>Solarplaza</title>
 | 
				
			||||||
  </head>
 | 
					  </head>
 | 
				
			||||||
  <body>
 | 
					  <body>
 | 
				
			||||||
    <div id="app"></div>
 | 
					    <div id="app"></div>
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| 
		 Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 51 KiB  | 
@@ -11,15 +11,19 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  <v-divider class="mt-2 mb-3 border-opacity-50 mx-[-1rem]" />
 | 
					  <v-divider class="mt-2 mb-3 border-opacity-50 mx-[-1rem]" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <v-btn block prepend-icon="mdi-pencil" variant="plain" @click="leaveComment">Leave your comment</v-btn>
 | 
					  <v-btn block prepend-icon="mdi-pencil" variant="plain" :disabled="!id.userinfo.isLoggedIn" @click="leaveComment">
 | 
				
			||||||
 | 
					    Leave your comment
 | 
				
			||||||
 | 
					  </v-btn>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script setup lang="ts">
 | 
					<script setup lang="ts">
 | 
				
			||||||
import { request } from "@/scripts/request"
 | 
					import { request } from "@/scripts/request"
 | 
				
			||||||
import { reactive, ref, watch } from "vue"
 | 
					import { reactive, ref, watch } from "vue"
 | 
				
			||||||
import { useEditor } from "@/stores/editor"
 | 
					import { useEditor } from "@/stores/editor"
 | 
				
			||||||
 | 
					import { useUserinfo } from "@/stores/userinfo"
 | 
				
			||||||
import PostItem from "@/components/posts/PostItem.vue"
 | 
					import PostItem from "@/components/posts/PostItem.vue"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const id = useUserinfo()
 | 
				
			||||||
const editor = useEditor()
 | 
					const editor = useEditor()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const props = defineProps<{
 | 
					const props = defineProps<{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@
 | 
				
			|||||||
        color="grey-lighten-2"
 | 
					        color="grey-lighten-2"
 | 
				
			||||||
        icon="mdi-account-circle"
 | 
					        icon="mdi-account-circle"
 | 
				
			||||||
        class="rounded-card"
 | 
					        class="rounded-card"
 | 
				
			||||||
        :src="props.item?.author.avatar"
 | 
					        :image="props.item?.author.avatar"
 | 
				
			||||||
      />
 | 
					      />
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    <v-menu v-if="!props.readonly" location="bottom center">
 | 
					    <v-menu v-if="!props.readonly" location="bottom center">
 | 
				
			||||||
      <template v-slot:activator="{ props: binding }">
 | 
					      <template v-slot:activator="{ props: binding }">
 | 
				
			||||||
        <v-chip v-bind="binding" :size="props.size" prepend-icon="mdi-emoticon-plus"> React </v-chip>
 | 
					        <v-chip v-if="id.userinfo.isLoggedIn" v-bind="binding" :size="props.size" prepend-icon="mdi-emoticon-plus">
 | 
				
			||||||
 | 
					          React
 | 
				
			||||||
 | 
					        </v-chip>
 | 
				
			||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <v-list density="compact" lines="one">
 | 
					      <v-list density="compact" lines="one">
 | 
				
			||||||
@@ -35,9 +37,11 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<script setup lang="ts">
 | 
					<script setup lang="ts">
 | 
				
			||||||
import { request } from "@/scripts/request"
 | 
					import { request } from "@/scripts/request"
 | 
				
			||||||
import { getAtk } from "@/stores/userinfo"
 | 
					import { getAtk, useUserinfo } from "@/stores/userinfo"
 | 
				
			||||||
import { reactive, ref } from "vue"
 | 
					import { reactive, ref } from "vue"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const id = useUserinfo()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const emits = defineEmits(["update"])
 | 
					const emits = defineEmits(["update"])
 | 
				
			||||||
const props = defineProps<{
 | 
					const props = defineProps<{
 | 
				
			||||||
  size?: string
 | 
					  size?: string
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,10 +4,25 @@
 | 
				
			|||||||
      <v-list>
 | 
					      <v-list>
 | 
				
			||||||
        <v-list-item :subtitle="username" :title="nickname">
 | 
					        <v-list-item :subtitle="username" :title="nickname">
 | 
				
			||||||
          <template #prepend>
 | 
					          <template #prepend>
 | 
				
			||||||
            <v-avatar icon="mdi-account-circle" :src="id.userinfo.data?.avatar" />
 | 
					            <v-avatar icon="mdi-account-circle" :image="id.userinfo.data?.avatar" />
 | 
				
			||||||
          </template>
 | 
					          </template>
 | 
				
			||||||
          <template #append>
 | 
					          <template #append>
 | 
				
			||||||
            <v-btn icon="mdi-menu-down" size="small" variant="text"></v-btn>
 | 
					            <v-menu v-if="id.userinfo.isLoggedIn">
 | 
				
			||||||
 | 
					              <template #activator="{ props }">
 | 
				
			||||||
 | 
					                <v-btn v-bind="props" icon="mdi-menu-down" size="small" variant="text" />
 | 
				
			||||||
 | 
					              </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              <v-list density="compact">
 | 
				
			||||||
 | 
					                <v-list-item
 | 
				
			||||||
 | 
					                  title="Solarpass"
 | 
				
			||||||
 | 
					                  prepend-icon="mdi-passport-biometric"
 | 
				
			||||||
 | 
					                  target="_blank"
 | 
				
			||||||
 | 
					                  :href="passportUrl"
 | 
				
			||||||
 | 
					                />
 | 
				
			||||||
 | 
					              </v-list>
 | 
				
			||||||
 | 
					            </v-menu>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <v-btn v-else icon="mdi-login-variant" size="small" variant="text" :href="signinUrl" />
 | 
				
			||||||
          </template>
 | 
					          </template>
 | 
				
			||||||
        </v-list-item>
 | 
					        </v-list-item>
 | 
				
			||||||
      </v-list>
 | 
					      </v-list>
 | 
				
			||||||
@@ -28,7 +43,7 @@
 | 
				
			|||||||
      <v-app-bar-nav-icon variant="text" @click.stop="toggleDrawer" />
 | 
					      <v-app-bar-nav-icon variant="text" @click.stop="toggleDrawer" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <router-link :to="{ name: 'explore' }">
 | 
					      <router-link :to="{ name: 'explore' }">
 | 
				
			||||||
        <h2 class="ml-2 text-lg font-500">Goatplaza</h2>
 | 
					        <h2 class="ml-2 text-lg font-500">Solarplaza</h2>
 | 
				
			||||||
      </router-link>
 | 
					      </router-link>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <v-spacer />
 | 
					      <v-spacer />
 | 
				
			||||||
@@ -54,7 +69,15 @@
 | 
				
			|||||||
    transition="scroll-y-reverse-transition"
 | 
					    transition="scroll-y-reverse-transition"
 | 
				
			||||||
  >
 | 
					  >
 | 
				
			||||||
    <template v-slot:activator="{ props }">
 | 
					    <template v-slot:activator="{ props }">
 | 
				
			||||||
      <v-fab v-bind="props" class="editor-fab" icon="mdi-pencil" color="primary" size="64" appear />
 | 
					      <v-fab
 | 
				
			||||||
 | 
					        v-bind="props"
 | 
				
			||||||
 | 
					        appear
 | 
				
			||||||
 | 
					        class="editor-fab"
 | 
				
			||||||
 | 
					        icon="mdi-pencil"
 | 
				
			||||||
 | 
					        color="primary"
 | 
				
			||||||
 | 
					        size="64"
 | 
				
			||||||
 | 
					        :active="id.userinfo.isLoggedIn"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
    </template>
 | 
					    </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <div class="flex flex-col items-center gap-4 mb-4">
 | 
					    <div class="flex flex-col items-center gap-4 mb-4">
 | 
				
			||||||
@@ -70,6 +93,7 @@
 | 
				
			|||||||
import { computed, ref } from "vue"
 | 
					import { computed, ref } from "vue"
 | 
				
			||||||
import { useEditor } from "@/stores/editor"
 | 
					import { useEditor } from "@/stores/editor"
 | 
				
			||||||
import { useUserinfo } from "@/stores/userinfo"
 | 
					import { useUserinfo } from "@/stores/userinfo"
 | 
				
			||||||
 | 
					import { useWellKnown } from "@/stores/wellKnown"
 | 
				
			||||||
import PostAction from "@/components/publish/PostAction.vue"
 | 
					import PostAction from "@/components/publish/PostAction.vue"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const id = useUserinfo()
 | 
					const id = useUserinfo()
 | 
				
			||||||
@@ -93,6 +117,17 @@ const nickname = computed(() => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
id.readProfiles()
 | 
					id.readProfiles()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const meta = useWellKnown()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const signinUrl = computed(() => {
 | 
				
			||||||
 | 
					  return meta.wellKnown?.components?.identity + `/auth/sign-in?redirect_uri=${encodeURIComponent(location.href)}`
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					const passportUrl = computed(() => {
 | 
				
			||||||
 | 
					  return meta.wellKnown?.components?.identity
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					meta.readWellKnown()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const drawerOpen = ref(true)
 | 
					const drawerOpen = ref(true)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function toggleDrawer() {
 | 
					function toggleDrawer() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@ import { defineStore } from "pinia"
 | 
				
			|||||||
import { ref } from "vue"
 | 
					import { ref } from "vue"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const useWellKnown = defineStore("well-known", () => {
 | 
					export const useWellKnown = defineStore("well-known", () => {
 | 
				
			||||||
  const wellKnown = ref({})
 | 
					  const wellKnown = ref<any>(null)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  async function readWellKnown() {
 | 
					  async function readWellKnown() {
 | 
				
			||||||
    const res = await request("/.well-known")
 | 
					    const res = await request("/.well-known")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@
 | 
				
			|||||||
                color="grey-lighten-2"
 | 
					                color="grey-lighten-2"
 | 
				
			||||||
                icon="mdi-account-circle"
 | 
					                icon="mdi-account-circle"
 | 
				
			||||||
                class="rounded-card"
 | 
					                class="rounded-card"
 | 
				
			||||||
                :src="post?.author.avatar"
 | 
					                :image="post?.author.avatar"
 | 
				
			||||||
              />
 | 
					              />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
              <div>
 | 
					              <div>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
debug = true
 | 
					debug = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
name = "Goatplaza"
 | 
					name = "Solarplaza"
 | 
				
			||||||
maintainer = "SmartSheep Studio"
 | 
					maintainer = "SmartSheep Studio"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bind = "0.0.0.0:8445"
 | 
					bind = "0.0.0.0:8445"
 | 
				
			||||||
@@ -10,7 +10,7 @@ secret = "LtTjzAGFLshwXhN4ZD4nG5KlMv1MWcsvfv03TSZYnT1VhiAnLIZFTnHUwR0XhGgi"
 | 
				
			|||||||
content = "uploads"
 | 
					content = "uploads"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[identity]
 | 
					[identity]
 | 
				
			||||||
client_id = "goatplaza"
 | 
					client_id = "solarplaza"
 | 
				
			||||||
client_secret = "Z9k9AFTj^p"
 | 
					client_secret = "Z9k9AFTj^p"
 | 
				
			||||||
endpoint = "http://localhost:8444"
 | 
					endpoint = "http://localhost:8444"
 | 
				
			||||||
grpc_endpoint = "127.0.0.1:7444"
 | 
					grpc_endpoint = "127.0.0.1:7444"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user