🗑️ Clean up code
This commit is contained in:
		
							
								
								
									
										12
									
								
								.idea/Passport.iml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										12
									
								
								.idea/Passport.iml
									
									
									
										generated
									
									
									
								
							@@ -1,12 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<module type="WEB_MODULE" version="4">
 | 
			
		||||
  <component name="Go" enabled="true" />
 | 
			
		||||
  <component name="NewModuleRootManager">
 | 
			
		||||
    <content url="file://$MODULE_DIR$" />
 | 
			
		||||
    <orderEntry type="inheritedJdk" />
 | 
			
		||||
    <orderEntry type="sourceFolder" forTests="false" />
 | 
			
		||||
    <orderEntry type="library" name="animate.css" level="application" />
 | 
			
		||||
    <orderEntry type="library" name="tailwindcss" level="application" />
 | 
			
		||||
    <orderEntry type="library" name="@tailwindcss/typography" level="application" />
 | 
			
		||||
  </component>
 | 
			
		||||
</module>
 | 
			
		||||
							
								
								
									
										59
									
								
								.idea/codeStyles/Project.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										59
									
								
								.idea/codeStyles/Project.xml
									
									
									
										generated
									
									
									
								
							@@ -1,59 +0,0 @@
 | 
			
		||||
<component name="ProjectCodeStyleConfiguration">
 | 
			
		||||
  <code_scheme name="Project" version="173">
 | 
			
		||||
    <HTMLCodeStyleSettings>
 | 
			
		||||
      <option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
 | 
			
		||||
    </HTMLCodeStyleSettings>
 | 
			
		||||
    <JSCodeStyleSettings version="0">
 | 
			
		||||
      <option name="USE_SEMICOLON_AFTER_STATEMENT" value="false" />
 | 
			
		||||
      <option name="FORCE_SEMICOLON_STYLE" value="true" />
 | 
			
		||||
      <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
 | 
			
		||||
      <option name="FORCE_QUOTE_STYlE" value="true" />
 | 
			
		||||
      <option name="ENFORCE_TRAILING_COMMA" value="WhenMultiline" />
 | 
			
		||||
      <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
 | 
			
		||||
      <option name="SPACES_WITHIN_IMPORTS" value="true" />
 | 
			
		||||
    </JSCodeStyleSettings>
 | 
			
		||||
    <TypeScriptCodeStyleSettings version="0">
 | 
			
		||||
      <option name="USE_SEMICOLON_AFTER_STATEMENT" value="false" />
 | 
			
		||||
      <option name="FORCE_SEMICOLON_STYLE" value="true" />
 | 
			
		||||
      <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
 | 
			
		||||
      <option name="FORCE_QUOTE_STYlE" value="true" />
 | 
			
		||||
      <option name="ENFORCE_TRAILING_COMMA" value="WhenMultiline" />
 | 
			
		||||
      <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
 | 
			
		||||
      <option name="SPACES_WITHIN_IMPORTS" value="true" />
 | 
			
		||||
    </TypeScriptCodeStyleSettings>
 | 
			
		||||
    <VueCodeStyleSettings>
 | 
			
		||||
      <option name="INTERPOLATION_NEW_LINE_AFTER_START_DELIMITER" value="false" />
 | 
			
		||||
      <option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
 | 
			
		||||
    </VueCodeStyleSettings>
 | 
			
		||||
    <codeStyleSettings language="HTML">
 | 
			
		||||
      <option name="SOFT_MARGINS" value="120" />
 | 
			
		||||
      <indentOptions>
 | 
			
		||||
        <option name="INDENT_SIZE" value="2" />
 | 
			
		||||
        <option name="CONTINUATION_INDENT_SIZE" value="2" />
 | 
			
		||||
        <option name="TAB_SIZE" value="2" />
 | 
			
		||||
      </indentOptions>
 | 
			
		||||
    </codeStyleSettings>
 | 
			
		||||
    <codeStyleSettings language="JavaScript">
 | 
			
		||||
      <option name="SOFT_MARGINS" value="120" />
 | 
			
		||||
      <indentOptions>
 | 
			
		||||
        <option name="INDENT_SIZE" value="2" />
 | 
			
		||||
        <option name="CONTINUATION_INDENT_SIZE" value="2" />
 | 
			
		||||
        <option name="TAB_SIZE" value="2" />
 | 
			
		||||
      </indentOptions>
 | 
			
		||||
    </codeStyleSettings>
 | 
			
		||||
    <codeStyleSettings language="TypeScript">
 | 
			
		||||
      <option name="SOFT_MARGINS" value="120" />
 | 
			
		||||
      <indentOptions>
 | 
			
		||||
        <option name="INDENT_SIZE" value="2" />
 | 
			
		||||
        <option name="CONTINUATION_INDENT_SIZE" value="2" />
 | 
			
		||||
        <option name="TAB_SIZE" value="2" />
 | 
			
		||||
      </indentOptions>
 | 
			
		||||
    </codeStyleSettings>
 | 
			
		||||
    <codeStyleSettings language="Vue">
 | 
			
		||||
      <option name="SOFT_MARGINS" value="120" />
 | 
			
		||||
      <indentOptions>
 | 
			
		||||
        <option name="CONTINUATION_INDENT_SIZE" value="2" />
 | 
			
		||||
      </indentOptions>
 | 
			
		||||
    </codeStyleSettings>
 | 
			
		||||
  </code_scheme>
 | 
			
		||||
</component>
 | 
			
		||||
							
								
								
									
										5
									
								
								.idea/codeStyles/codeStyleConfig.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										5
									
								
								.idea/codeStyles/codeStyleConfig.xml
									
									
									
										generated
									
									
									
								
							@@ -1,5 +0,0 @@
 | 
			
		||||
<component name="ProjectCodeStyleConfiguration">
 | 
			
		||||
  <state>
 | 
			
		||||
    <option name="USE_PER_PROJECT_SETTINGS" value="true" />
 | 
			
		||||
  </state>
 | 
			
		||||
</component>
 | 
			
		||||
							
								
								
									
										43
									
								
								.idea/dataSources.local.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										43
									
								
								.idea/dataSources.local.xml
									
									
									
										generated
									
									
									
								
							@@ -1,43 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<project version="4">
 | 
			
		||||
  <component name="dataSourceStorageLocal" created-in="GO-243.24978.59">
 | 
			
		||||
    <data-source name="hy_passport@localhost" uuid="74bcf3ef-a2b9-435b-b9e5-f32902a33b25">
 | 
			
		||||
      <database-info product="PostgreSQL" version="16.4 (Homebrew)" jdbc-version="4.2" driver-name="PostgreSQL JDBC Driver" driver-version="42.6.0" dbms="POSTGRES" exact-version="16.4" exact-driver-version="42.6">
 | 
			
		||||
        <identifier-quote-string>"</identifier-quote-string>
 | 
			
		||||
      </database-info>
 | 
			
		||||
      <case-sensitivity plain-identifiers="lower" quoted-identifiers="exact" />
 | 
			
		||||
      <secret-storage>master_key</secret-storage>
 | 
			
		||||
      <user-name>postgres</user-name>
 | 
			
		||||
      <schema-mapping>
 | 
			
		||||
        <introspection-scope>
 | 
			
		||||
          <node negative="1">
 | 
			
		||||
            <node kind="database">
 | 
			
		||||
              <name qname="sn_interactive" />
 | 
			
		||||
              <name qname="sn_messaging" />
 | 
			
		||||
            </node>
 | 
			
		||||
            <node kind="database">
 | 
			
		||||
              <name qname="sn_paperclip" />
 | 
			
		||||
              <name qname="sn_passport" />
 | 
			
		||||
              <node kind="schema" qname="public" />
 | 
			
		||||
            </node>
 | 
			
		||||
          </node>
 | 
			
		||||
        </introspection-scope>
 | 
			
		||||
      </schema-mapping>
 | 
			
		||||
    </data-source>
 | 
			
		||||
    <data-source name="passport@id.solsynth.dev" uuid="723637bc-6ce3-4bbe-afb3-d88730c75a1b">
 | 
			
		||||
      <database-info product="PostgreSQL" version="16.2 (Ubuntu 16.2-1.pgdg22.04+1)" jdbc-version="4.2" driver-name="PostgreSQL JDBC Driver" driver-version="42.6.0" dbms="POSTGRES" exact-version="16.2" exact-driver-version="42.6">
 | 
			
		||||
        <identifier-quote-string>"</identifier-quote-string>
 | 
			
		||||
      </database-info>
 | 
			
		||||
      <case-sensitivity plain-identifiers="lower" quoted-identifiers="exact" />
 | 
			
		||||
      <secret-storage>master_key</secret-storage>
 | 
			
		||||
      <user-name>postgres</user-name>
 | 
			
		||||
      <schema-mapping>
 | 
			
		||||
        <introspection-scope>
 | 
			
		||||
          <node kind="database" qname="@">
 | 
			
		||||
            <node kind="schema" qname="@" />
 | 
			
		||||
          </node>
 | 
			
		||||
        </introspection-scope>
 | 
			
		||||
      </schema-mapping>
 | 
			
		||||
    </data-source>
 | 
			
		||||
  </component>
 | 
			
		||||
</project>
 | 
			
		||||
							
								
								
									
										19
									
								
								.idea/dataSources.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										19
									
								
								.idea/dataSources.xml
									
									
									
										generated
									
									
									
								
							@@ -1,19 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<project version="4">
 | 
			
		||||
  <component name="DataSourceManagerImpl" format="xml" multifile-model="true">
 | 
			
		||||
    <data-source source="LOCAL" name="hy_passport@localhost" uuid="74bcf3ef-a2b9-435b-b9e5-f32902a33b25">
 | 
			
		||||
      <driver-ref>postgresql</driver-ref>
 | 
			
		||||
      <synchronize>true</synchronize>
 | 
			
		||||
      <jdbc-driver>org.postgresql.Driver</jdbc-driver>
 | 
			
		||||
      <jdbc-url>jdbc:postgresql://localhost:5432/hy_passport</jdbc-url>
 | 
			
		||||
      <working-dir>$ProjectFileDir$</working-dir>
 | 
			
		||||
    </data-source>
 | 
			
		||||
    <data-source source="LOCAL" name="passport@id.solsynth.dev" uuid="723637bc-6ce3-4bbe-afb3-d88730c75a1b">
 | 
			
		||||
      <driver-ref>postgresql</driver-ref>
 | 
			
		||||
      <synchronize>true</synchronize>
 | 
			
		||||
      <jdbc-driver>org.postgresql.Driver</jdbc-driver>
 | 
			
		||||
      <jdbc-url>jdbc:postgresql://id.solsynth.dev:5432/passport</jdbc-url>
 | 
			
		||||
      <working-dir>$ProjectFileDir$</working-dir>
 | 
			
		||||
    </data-source>
 | 
			
		||||
  </component>
 | 
			
		||||
</project>
 | 
			
		||||
							
								
								
									
										6598
									
								
								.idea/dataSources/723637bc-6ce3-4bbe-afb3-d88730c75a1b.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6598
									
								
								.idea/dataSources/723637bc-6ce3-4bbe-afb3-d88730c75a1b.xml
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1 +0,0 @@
 | 
			
		||||
#n:passport
 | 
			
		||||
@@ -1,2 +0,0 @@
 | 
			
		||||
#n:public
 | 
			
		||||
!<md> [41831, 0, null, null, -2147483648, -2147483648]
 | 
			
		||||
							
								
								
									
										10553
									
								
								.idea/dataSources/74bcf3ef-a2b9-435b-b9e5-f32902a33b25.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										10553
									
								
								.idea/dataSources/74bcf3ef-a2b9-435b-b9e5-f32902a33b25.xml
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1 +0,0 @@
 | 
			
		||||
#n:hy_passport
 | 
			
		||||
@@ -1,2 +0,0 @@
 | 
			
		||||
#n:public
 | 
			
		||||
!<md> [10209, 0, null, null, -2147483648, -2147483648]
 | 
			
		||||
							
								
								
									
										6
									
								
								.idea/inspectionProfiles/Project_Default.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								.idea/inspectionProfiles/Project_Default.xml
									
									
									
										generated
									
									
									
								
							@@ -1,6 +0,0 @@
 | 
			
		||||
<component name="InspectionProjectProfileManager">
 | 
			
		||||
  <profile version="1.0">
 | 
			
		||||
    <option name="myName" value="Project Default" />
 | 
			
		||||
    <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
			
		||||
  </profile>
 | 
			
		||||
</component>
 | 
			
		||||
							
								
								
									
										6
									
								
								.idea/jsLibraryMappings.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								.idea/jsLibraryMappings.xml
									
									
									
										generated
									
									
									
								
							@@ -1,6 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<project version="4">
 | 
			
		||||
  <component name="JavaScriptLibraryMappings">
 | 
			
		||||
    <file url="PROJECT" libraries="{@tailwindcss/typography, animate.css, tailwindcss}" />
 | 
			
		||||
  </component>
 | 
			
		||||
</project>
 | 
			
		||||
							
								
								
									
										8
									
								
								.idea/modules.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								.idea/modules.xml
									
									
									
										generated
									
									
									
								
							@@ -1,8 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<project version="4">
 | 
			
		||||
  <component name="ProjectModuleManager">
 | 
			
		||||
    <modules>
 | 
			
		||||
      <module fileurl="file://$PROJECT_DIR$/.idea/Passport.iml" filepath="$PROJECT_DIR$/.idea/Passport.iml" />
 | 
			
		||||
    </modules>
 | 
			
		||||
  </component>
 | 
			
		||||
</project>
 | 
			
		||||
							
								
								
									
										6
									
								
								.idea/vcs.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								.idea/vcs.xml
									
									
									
										generated
									
									
									
								
							@@ -1,6 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<project version="4">
 | 
			
		||||
  <component name="VcsDirectoryMappings">
 | 
			
		||||
    <mapping directory="" vcs="Git" />
 | 
			
		||||
  </component>
 | 
			
		||||
</project>
 | 
			
		||||
							
								
								
									
										192
									
								
								.idea/workspace.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										192
									
								
								.idea/workspace.xml
									
									
									
										generated
									
									
									
								
							@@ -1,192 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<project version="4">
 | 
			
		||||
  <component name="AutoImportSettings">
 | 
			
		||||
    <option name="autoReloadType" value="ALL" />
 | 
			
		||||
  </component>
 | 
			
		||||
  <component name="ChangeListManager">
 | 
			
		||||
    <list default="true" id="3fefb2c4-b6f9-466b-a523-53352e8d6f95" name="更改" comment=":necktie: No longer return error when trying add a member who already in the realm">
 | 
			
		||||
      <change beforePath="$PROJECT_DIR$/pkg/internal/http/api/realm_members_api.go" beforeDir="false" afterPath="$PROJECT_DIR$/pkg/internal/http/api/realm_members_api.go" afterDir="false" />
 | 
			
		||||
    </list>
 | 
			
		||||
    <option name="SHOW_DIALOG" value="false" />
 | 
			
		||||
    <option name="HIGHLIGHT_CONFLICTS" value="true" />
 | 
			
		||||
    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
 | 
			
		||||
    <option name="LAST_RESOLUTION" value="IGNORE" />
 | 
			
		||||
  </component>
 | 
			
		||||
  <component name="FileTemplateManagerImpl">
 | 
			
		||||
    <option name="RECENT_TEMPLATES">
 | 
			
		||||
      <list>
 | 
			
		||||
        <option value="Go File" />
 | 
			
		||||
      </list>
 | 
			
		||||
    </option>
 | 
			
		||||
  </component>
 | 
			
		||||
  <component name="GOROOT" url="file:///opt/homebrew/opt/go/libexec" />
 | 
			
		||||
  <component name="Git.Settings">
 | 
			
		||||
    <option name="RECENT_BRANCH_BY_REPOSITORY">
 | 
			
		||||
      <map>
 | 
			
		||||
        <entry key="$PROJECT_DIR$" value="master" />
 | 
			
		||||
      </map>
 | 
			
		||||
    </option>
 | 
			
		||||
    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
 | 
			
		||||
  </component>
 | 
			
		||||
  <component name="KubernetesApiPersistence">{}</component>
 | 
			
		||||
  <component name="KubernetesApiProvider">{
 | 
			
		||||
  "isMigrated": true
 | 
			
		||||
}</component>
 | 
			
		||||
  <component name="ProblemsViewState">
 | 
			
		||||
    <option name="selectedTabId" value="ProjectErrors" />
 | 
			
		||||
  </component>
 | 
			
		||||
  <component name="ProjectColorInfo">{
 | 
			
		||||
  "customColor": "",
 | 
			
		||||
  "associatedIndex": 6
 | 
			
		||||
}</component>
 | 
			
		||||
  <component name="ProjectId" id="2fLXu43fjlLYVIGNrhGhOgBFq2O" />
 | 
			
		||||
  <component name="ProjectViewState">
 | 
			
		||||
    <option name="hideEmptyMiddlePackages" value="true" />
 | 
			
		||||
    <option name="showLibraryContents" value="true" />
 | 
			
		||||
  </component>
 | 
			
		||||
  <component name="PropertiesComponent">{
 | 
			
		||||
  "keyToString": {
 | 
			
		||||
    "DefaultGoTemplateProperty": "Go File",
 | 
			
		||||
    "Go Build.Backend.executor": "Run",
 | 
			
		||||
    "Go 构建.Backend.executor": "Run",
 | 
			
		||||
    "RunOnceActivity.ShowReadmeOnStart": "true",
 | 
			
		||||
    "RunOnceActivity.git.unshallow": "true",
 | 
			
		||||
    "RunOnceActivity.go.formatter.settings.were.checked": "true",
 | 
			
		||||
    "RunOnceActivity.go.migrated.go.modules.settings": "true",
 | 
			
		||||
    "RunOnceActivity.go.modules.automatic.dependencies.download": "true",
 | 
			
		||||
    "RunOnceActivity.go.modules.go.list.on.any.changes.was.set": "true",
 | 
			
		||||
    "git-widget-placeholder": "master",
 | 
			
		||||
    "go.import.settings.migrated": "true",
 | 
			
		||||
    "go.sdk.automatically.set": "true",
 | 
			
		||||
    "last_opened_file_path": "/Users/littlesheep/Documents/Projects/Hypernet/Passport",
 | 
			
		||||
    "node.js.detected.package.eslint": "true",
 | 
			
		||||
    "node.js.selected.package.eslint": "(autodetect)",
 | 
			
		||||
    "nodejs_package_manager_path": "npm",
 | 
			
		||||
    "run.code.analysis.last.selected.profile": "pProject Default",
 | 
			
		||||
    "settings.editor.selected.configurable": "preferences.intentionPowerPack",
 | 
			
		||||
    "ts.external.directory.path": "/Users/littlesheep/Documents/Projects/Hydrogen/Passport/web/node_modules/typescript/lib",
 | 
			
		||||
    "vue.rearranger.settings.migration": "true"
 | 
			
		||||
  },
 | 
			
		||||
  "keyToStringList": {
 | 
			
		||||
    "DatabaseDriversLRU": [
 | 
			
		||||
      "postgresql"
 | 
			
		||||
    ]
 | 
			
		||||
  }
 | 
			
		||||
}</component>
 | 
			
		||||
  <component name="RecentsManager">
 | 
			
		||||
    <key name="CopyFile.RECENT_KEYS">
 | 
			
		||||
      <recent name="$PROJECT_DIR$/keys" />
 | 
			
		||||
      <recent name="$PROJECT_DIR$/pkg/proto" />
 | 
			
		||||
      <recent name="$PROJECT_DIR$/web/src/components/admin" />
 | 
			
		||||
      <recent name="$PROJECT_DIR$/web/src/views" />
 | 
			
		||||
      <recent name="$PROJECT_DIR$/pkg/internal/server/api" />
 | 
			
		||||
    </key>
 | 
			
		||||
    <key name="MoveFile.RECENT_KEYS">
 | 
			
		||||
      <recent name="$PROJECT_DIR$/templates" />
 | 
			
		||||
      <recent name="$PROJECT_DIR$/pkg/authkit" />
 | 
			
		||||
      <recent name="$PROJECT_DIR$/web/src/views/flow" />
 | 
			
		||||
      <recent name="$PROJECT_DIR$/pkg/internal/server/exts" />
 | 
			
		||||
      <recent name="$PROJECT_DIR$/pkg/internal/server/api" />
 | 
			
		||||
    </key>
 | 
			
		||||
  </component>
 | 
			
		||||
  <component name="RunAnythingCache">
 | 
			
		||||
    <myKeys>
 | 
			
		||||
      <visibility group="Grunt" flag="true" />
 | 
			
		||||
      <visibility group="Gulp" flag="true" />
 | 
			
		||||
      <visibility group="HTTP Requests" flag="true" />
 | 
			
		||||
      <visibility group="HTTP 请求" flag="true" />
 | 
			
		||||
      <visibility group="Recent projects" flag="true" />
 | 
			
		||||
      <visibility group="Run configurations" flag="true" />
 | 
			
		||||
      <visibility group="npm" flag="true" />
 | 
			
		||||
      <visibility group="yarn" flag="true" />
 | 
			
		||||
    </myKeys>
 | 
			
		||||
  </component>
 | 
			
		||||
  <component name="RunManager">
 | 
			
		||||
    <configuration name="Backend" type="GoApplicationRunConfiguration" factoryName="Go Application">
 | 
			
		||||
      <module name="Passport" />
 | 
			
		||||
      <working_directory value="$PROJECT_DIR$" />
 | 
			
		||||
      <kind value="FILE" />
 | 
			
		||||
      <package value="git.solsynth.dev/hydrogen/passport" />
 | 
			
		||||
      <directory value="$PROJECT_DIR$" />
 | 
			
		||||
      <filePath value="$PROJECT_DIR$/pkg/main.go" />
 | 
			
		||||
      <output_directory value="$PROJECT_DIR$/dist" />
 | 
			
		||||
      <method v="2" />
 | 
			
		||||
    </configuration>
 | 
			
		||||
  </component>
 | 
			
		||||
  <component name="SharedIndexes">
 | 
			
		||||
    <attachedChunks>
 | 
			
		||||
      <set>
 | 
			
		||||
        <option value="bundled-gosdk-d297c17c1fbd-57c114c3cede-org.jetbrains.plugins.go.sharedIndexes.bundled-GO-243.24978.59" />
 | 
			
		||||
        <option value="bundled-js-predefined-d6986cc7102b-76f8388c3a79-JavaScript-GO-243.24978.59" />
 | 
			
		||||
      </set>
 | 
			
		||||
    </attachedChunks>
 | 
			
		||||
  </component>
 | 
			
		||||
  <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
 | 
			
		||||
  <component name="TypeScriptGeneratedFilesManager">
 | 
			
		||||
    <option name="version" value="3" />
 | 
			
		||||
  </component>
 | 
			
		||||
  <component name="UnknownFeatures">
 | 
			
		||||
    <option featureType="dependencySupport" implementationName="javascript:npm:prettier" />
 | 
			
		||||
    <option featureType="dependencySupport" implementationName="executable:docker" />
 | 
			
		||||
    <option featureType="dependencySupport" implementationName="javascript:npm:unocss" />
 | 
			
		||||
    <option featureType="dependencySupport" implementationName="javascript:npm:vite" />
 | 
			
		||||
    <option featureType="dependencySupport" implementationName="executable:kubectl" />
 | 
			
		||||
    <option featureType="dependencySupport" implementationName="javascript:npm:vue" />
 | 
			
		||||
  </component>
 | 
			
		||||
  <component name="Vcs.Log.Tabs.Properties">
 | 
			
		||||
    <option name="TAB_STATES">
 | 
			
		||||
      <map>
 | 
			
		||||
        <entry key="MAIN">
 | 
			
		||||
          <value>
 | 
			
		||||
            <State>
 | 
			
		||||
              <option name="FILTERS">
 | 
			
		||||
                <map>
 | 
			
		||||
                  <entry key="branch">
 | 
			
		||||
                    <value>
 | 
			
		||||
                      <list>
 | 
			
		||||
                        <option value="master" />
 | 
			
		||||
                      </list>
 | 
			
		||||
                    </value>
 | 
			
		||||
                  </entry>
 | 
			
		||||
                </map>
 | 
			
		||||
              </option>
 | 
			
		||||
            </State>
 | 
			
		||||
          </value>
 | 
			
		||||
        </entry>
 | 
			
		||||
      </map>
 | 
			
		||||
    </option>
 | 
			
		||||
  </component>
 | 
			
		||||
  <component name="VcsManagerConfiguration">
 | 
			
		||||
    <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="false" />
 | 
			
		||||
    <MESSAGE value=":boom: Move remove member api arguments from body to querystring just as messaging" />
 | 
			
		||||
    <MESSAGE value=":bug: Hotfix previous commit compile issue" />
 | 
			
		||||
    <MESSAGE value=":sparkles: Add realm member support both account name and id" />
 | 
			
		||||
    <MESSAGE value=":bug: Prevent user adding a user twice into a realm" />
 | 
			
		||||
    <MESSAGE value=":boom: Pagination fetching realm member api
:bug: Fix remove realm member has no memberId path param" />
 | 
			
		||||
    <MESSAGE value=":bug: Fix check user exists in realm bug" />
 | 
			
		||||
    <MESSAGE value=":loud_sound: Verbose logging at setting last seen at" />
 | 
			
		||||
    <MESSAGE value=":loud_sound: Verbose logging at receive broadcasting event" />
 | 
			
		||||
    <MESSAGE value=":bug: Bug fix directory service wasn't registered" />
 | 
			
		||||
    <MESSAGE value=":bug: Fix random panic" />
 | 
			
		||||
    <MESSAGE value=":zap: Add cache into querying user" />
 | 
			
		||||
    <MESSAGE value=":bug: Fix missing api endpoint" />
 | 
			
		||||
    <MESSAGE value=":zap: A separate API to only get notification count" />
 | 
			
		||||
    <MESSAGE value=":bug: Bug fixes on notifications" />
 | 
			
		||||
    <MESSAGE value=":bug: Fix list user relative return wrong data" />
 | 
			
		||||
    <MESSAGE value=":sparkles: Account preferred language" />
 | 
			
		||||
    <MESSAGE value=":sparkles: Push email & notification localization" />
 | 
			
		||||
    <MESSAGE value=":globe_with_meridians: Fully localized notification" />
 | 
			
		||||
    <MESSAGE value=":bug: Bug fixes on localization" />
 | 
			
		||||
    <MESSAGE value=":bug: Fix email html rendering" />
 | 
			
		||||
    <MESSAGE value=":sparkles: Register with preferred language" />
 | 
			
		||||
    <MESSAGE value=":necktie: Limit max auth steps to 2 for normal users" />
 | 
			
		||||
    <MESSAGE value=":recycle: Replace i18n services with nexus one" />
 | 
			
		||||
    <MESSAGE value=":bug: Fix inconsistent remove member behaviour with messaging" />
 | 
			
		||||
    <MESSAGE value=":necktie: No longer return error when trying add a member who already in the realm" />
 | 
			
		||||
    <option name="LAST_COMMIT_MESSAGE" value=":necktie: No longer return error when trying add a member who already in the realm" />
 | 
			
		||||
    <option name="GROUP_MULTIFILE_MERGE_BY_DIRECTORY" value="true" />
 | 
			
		||||
  </component>
 | 
			
		||||
  <component name="VgoProject">
 | 
			
		||||
    <settings-migrated>true</settings-migrated>
 | 
			
		||||
  </component>
 | 
			
		||||
</project>
 | 
			
		||||
							
								
								
									
										1
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								go.mod
									
									
									
									
									
								
							@@ -12,6 +12,7 @@ require (
 | 
			
		||||
	github.com/fatih/color v1.18.0
 | 
			
		||||
	github.com/go-playground/validator/v10 v10.22.1
 | 
			
		||||
	github.com/goccy/go-json v0.10.3
 | 
			
		||||
	github.com/gofiber/contrib/fiberzerolog v1.0.2
 | 
			
		||||
	github.com/gofiber/fiber/v2 v2.52.5
 | 
			
		||||
	github.com/golang-jwt/jwt/v5 v5.2.1
 | 
			
		||||
	github.com/google/uuid v1.6.0
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								go.sum
									
									
									
									
									
								
							@@ -33,19 +33,15 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9
 | 
			
		||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
 | 
			
		||||
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
 | 
			
		||||
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
 | 
			
		||||
git.solsynth.dev/hypernet/nexus v0.0.0-20241123050605-25ab1371739b h1:8yB9kMwEMY/nIbmDDxrhH5sTypgmK5PIIiIfP5QXx4s=
 | 
			
		||||
git.solsynth.dev/hypernet/nexus v0.0.0-20241123050605-25ab1371739b/go.mod h1:PhLCv2lsNoscPVJbkWnxwQnJ141lc4RIEkVffrHwl4s=
 | 
			
		||||
git.solsynth.dev/hypernet/nexus v0.0.0-20250202054714-6de240179f9c h1:z0//UGRwyZq1TIvn5/fGK5GCXr837KLFD3K0AkaKDyY=
 | 
			
		||||
git.solsynth.dev/hypernet/nexus v0.0.0-20250202054714-6de240179f9c/go.mod h1:v+rpf1ZDRi8moaThTAkj5DMQU+rw96YTHcN8/7n/p2Y=
 | 
			
		||||
git.solsynth.dev/hypernet/nexus v0.0.0-20250216103838-15c39609b897 h1:AmLZ/r70e2E06Bq1kdOFirH+Izv5w1vpmeQ+rJrfdTg=
 | 
			
		||||
git.solsynth.dev/hypernet/nexus v0.0.0-20250216103838-15c39609b897/go.mod h1:v+rpf1ZDRi8moaThTAkj5DMQU+rw96YTHcN8/7n/p2Y=
 | 
			
		||||
git.solsynth.dev/hypernet/pusher v0.0.0-20241228030233-50ff8304e465 h1:KFtv9lF0JMUGsq1uHwQvop8PTyqdiLuUQuRrd5WmzPk=
 | 
			
		||||
git.solsynth.dev/hypernet/pusher v0.0.0-20241228030233-50ff8304e465/go.mod h1:XHTqFU/vBe4JiuAjl87GUcL8+w/IizSNoqH6n3WkQFc=
 | 
			
		||||
git.solsynth.dev/hypernet/pusher v0.0.0-20250216145944-5fb769823a88 h1:2HEENe9KUrdaJeNBzx9lsuXQGyzWqCgnLTKQnr8xFr8=
 | 
			
		||||
git.solsynth.dev/hypernet/pusher v0.0.0-20250216145944-5fb769823a88/go.mod h1:ildzMtLagNsLK0Rkw4Hgk2TrrwqZnjwJIUx0MNZwcDY=
 | 
			
		||||
git.solsynth.dev/hypernet/wallet v0.0.0-20250129150034-87b94cdb5488 h1:/9Ol+PfDQFAYtHo0kk6sxqiEsZ6epb6yUEsZJxy14Mk=
 | 
			
		||||
git.solsynth.dev/hypernet/wallet v0.0.0-20250129150034-87b94cdb5488/go.mod h1:jd1MTBI5NPHne22nq7nR7kyl4iYb9kV2A+tpXi7HOYY=
 | 
			
		||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 | 
			
		||||
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
 | 
			
		||||
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
 | 
			
		||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
 | 
			
		||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
 | 
			
		||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
 | 
			
		||||
@@ -129,6 +125,8 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me
 | 
			
		||||
github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA=
 | 
			
		||||
github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
 | 
			
		||||
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 | 
			
		||||
github.com/gofiber/contrib/fiberzerolog v1.0.2 h1:LMa/luarQVeINoRwZLHtLQYepLPDIwUNB5OmdZKk+s8=
 | 
			
		||||
github.com/gofiber/contrib/fiberzerolog v1.0.2/go.mod h1:aTPsgArSgxRWcUeJ/K6PiICz3mbQENR1QOR426QwOoQ=
 | 
			
		||||
github.com/gofiber/fiber/v2 v2.36.0/go.mod h1:tgCr+lierLwLoVHHO/jn3Niannv34WRkQETU8wiL9fQ=
 | 
			
		||||
github.com/gofiber/fiber/v2 v2.52.5 h1:tWoP1MJQjGEe4GB5TUGOi7P2E0ZMMRx5ZTG4rT+yGMo=
 | 
			
		||||
github.com/gofiber/fiber/v2 v2.52.5/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ=
 | 
			
		||||
 
 | 
			
		||||
@@ -342,11 +342,12 @@ func DeleteAccount(id uint) error {
 | 
			
		||||
		return err
 | 
			
		||||
	} else {
 | 
			
		||||
		InvalidAuthCacheWithUser(id)
 | 
			
		||||
		_, _ = proto.NewDirectoryServiceClient(gap.Nx.GetNexusGrpcConn()).BroadcastEvent(context.Background(), &proto.EventInfo{
 | 
			
		||||
		conn := gap.Nx.GetNexusGrpcConn()
 | 
			
		||||
		_, _ = proto.NewDirectoryServiceClient(conn).BroadcastEvent(context.Background(), &proto.EventInfo{
 | 
			
		||||
			Event: "deletion",
 | 
			
		||||
			Data: nex.EncodeMap(map[string]any{
 | 
			
		||||
				"type": "account",
 | 
			
		||||
				"id":   fmt.Sprintf("%d", id),
 | 
			
		||||
				"id":   id,
 | 
			
		||||
			}),
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ package admin
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
@@ -3,7 +3,7 @@ package admin
 | 
			
		||||
import (
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
	jsoniter "github.com/json-iterator/go"
 | 
			
		||||
	"github.com/samber/lo"
 | 
			
		||||
@@ -4,7 +4,7 @@ import (
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func MapAdminAPIs(app *fiber.App, baseURL string) {
 | 
			
		||||
func MapControllers(app *fiber.App, baseURL string) {
 | 
			
		||||
	admin := app.Group(baseURL)
 | 
			
		||||
	{
 | 
			
		||||
		admin.Post("/badges", grantBadge)
 | 
			
		||||
@@ -3,8 +3,8 @@ package admin
 | 
			
		||||
import (
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
	"github.com/rs/zerolog/log"
 | 
			
		||||
)
 | 
			
		||||
@@ -5,8 +5,8 @@ import (
 | 
			
		||||
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -4,8 +4,8 @@ import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -9,7 +9,7 @@ import (
 | 
			
		||||
	"git.solsynth.dev/hypernet/nexus/pkg/nex/sec"
 | 
			
		||||
	"gorm.io/gorm"
 | 
			
		||||
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
@@ -4,7 +4,7 @@ import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
 | 
			
		||||
@@ -3,8 +3,8 @@ package api
 | 
			
		||||
import (
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
	"strconv"
 | 
			
		||||
)
 | 
			
		||||
@@ -4,8 +4,8 @@ import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
	"gorm.io/gorm"
 | 
			
		||||
)
 | 
			
		||||
@@ -3,8 +3,8 @@ package api
 | 
			
		||||
import (
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
	"github.com/samber/lo"
 | 
			
		||||
	"gorm.io/datatypes"
 | 
			
		||||
@@ -3,8 +3,8 @@ package api
 | 
			
		||||
import (
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
	"strconv"
 | 
			
		||||
)
 | 
			
		||||
@@ -4,7 +4,7 @@ import (
 | 
			
		||||
	"git.solsynth.dev/hypernet/nexus/pkg/nex/sec"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -45,9 +45,9 @@ func createContact(c *fiber.Ctx) error {
 | 
			
		||||
	user := c.Locals("user").(models.Account)
 | 
			
		||||
 | 
			
		||||
	var data struct {
 | 
			
		||||
		Type int8 `json:"type"`
 | 
			
		||||
		Content string `json:"content" validate:"required"`
 | 
			
		||||
		IsPublic bool `json:"is_public"`
 | 
			
		||||
		Type     int8   `json:"type"`
 | 
			
		||||
		Content  string `json:"content" validate:"required"`
 | 
			
		||||
		IsPublic bool   `json:"is_public"`
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := exts.BindAndValidate(c, &data); err != nil {
 | 
			
		||||
@@ -55,13 +55,13 @@ func createContact(c *fiber.Ctx) error {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	contact := models.AccountContact{
 | 
			
		||||
        Type:       data.Type,
 | 
			
		||||
        Content:    data.Content,
 | 
			
		||||
        IsPublic:   data.IsPublic,
 | 
			
		||||
        IsPrimary:  false,
 | 
			
		||||
        VerifiedAt: nil,
 | 
			
		||||
        AccountID:  user.ID,
 | 
			
		||||
    }
 | 
			
		||||
		Type:       data.Type,
 | 
			
		||||
		Content:    data.Content,
 | 
			
		||||
		IsPublic:   data.IsPublic,
 | 
			
		||||
		IsPrimary:  false,
 | 
			
		||||
		VerifiedAt: nil,
 | 
			
		||||
		AccountID:  user.ID,
 | 
			
		||||
	}
 | 
			
		||||
	if err := database.C.Create(&contact).Error; err != nil {
 | 
			
		||||
		return fiber.NewError(fiber.StatusInternalServerError, err.Error())
 | 
			
		||||
	}
 | 
			
		||||
@@ -78,9 +78,9 @@ func updateContact(c *fiber.Ctx) error {
 | 
			
		||||
	contactId, _ := c.ParamsInt("contactId")
 | 
			
		||||
 | 
			
		||||
	var data struct {
 | 
			
		||||
		Type int8 `json:"type"`
 | 
			
		||||
		Content string `json:"content" validate:"required"`
 | 
			
		||||
		IsPublic bool `json:"is_public"`
 | 
			
		||||
		Type     int8   `json:"type"`
 | 
			
		||||
		Content  string `json:"content" validate:"required"`
 | 
			
		||||
		IsPublic bool   `json:"is_public"`
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := exts.BindAndValidate(c, &data); err != nil {
 | 
			
		||||
@@ -124,4 +124,4 @@ func deleteContact(c *fiber.Ctx) error {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return c.SendStatus(fiber.StatusOK)
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
@@ -3,7 +3,7 @@ package api
 | 
			
		||||
import (
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -5,8 +5,8 @@ import (
 | 
			
		||||
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
	"github.com/pquerna/otp/totp"
 | 
			
		||||
	"github.com/samber/lo"
 | 
			
		||||
@@ -4,7 +4,7 @@ import (
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func MapAPIs(app *fiber.App, baseURL string) {
 | 
			
		||||
func MapControllers(app *fiber.App, baseURL string) {
 | 
			
		||||
	api := app.Group(baseURL).Name("API")
 | 
			
		||||
	{
 | 
			
		||||
		api.Get("/well-known/openid-configuration", getOidcConfiguration)
 | 
			
		||||
@@ -6,8 +6,8 @@ import (
 | 
			
		||||
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
	"github.com/samber/lo"
 | 
			
		||||
)
 | 
			
		||||
@@ -5,8 +5,8 @@ import (
 | 
			
		||||
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -4,7 +4,7 @@ import (
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
package api
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -2,8 +2,8 @@ package api
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -3,8 +3,8 @@ package api
 | 
			
		||||
import (
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
	"strconv"
 | 
			
		||||
)
 | 
			
		||||
@@ -1,12 +1,13 @@
 | 
			
		||||
package api
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"strconv"
 | 
			
		||||
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
	"strconv"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func getRealm(c *fiber.Ctx) error {
 | 
			
		||||
@@ -5,8 +5,8 @@ import (
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
	"github.com/samber/lo"
 | 
			
		||||
)
 | 
			
		||||
@@ -2,8 +2,8 @@ package api
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -3,7 +3,7 @@ package api
 | 
			
		||||
import (
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -7,8 +7,8 @@ import (
 | 
			
		||||
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/database"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
	"github.com/samber/lo"
 | 
			
		||||
)
 | 
			
		||||
@@ -9,7 +9,7 @@ import (
 | 
			
		||||
	"git.solsynth.dev/hypernet/nexus/pkg/nex/sec"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit/models"
 | 
			
		||||
	localCache "git.solsynth.dev/hypernet/passport/pkg/internal/cache"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/exts"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/exts"
 | 
			
		||||
	"github.com/eko/gocache/lib/v4/cache"
 | 
			
		||||
	"github.com/eko/gocache/lib/v4/marshaler"
 | 
			
		||||
	"gorm.io/gorm"
 | 
			
		||||
@@ -1,16 +1,17 @@
 | 
			
		||||
package http
 | 
			
		||||
package web
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"git.solsynth.dev/hypernet/nexus/pkg/nex/sec"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/admin"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http/api"
 | 
			
		||||
	"git.solsynth.dev/hypernet/nexus/pkg/nex/sec"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/authkit"
 | 
			
		||||
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/admin"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web/api"
 | 
			
		||||
	"github.com/gofiber/contrib/fiberzerolog"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
	"github.com/gofiber/fiber/v2/middleware/cors"
 | 
			
		||||
	"github.com/gofiber/fiber/v2/middleware/idempotency"
 | 
			
		||||
	"github.com/gofiber/fiber/v2/middleware/logger"
 | 
			
		||||
	jsoniter "github.com/json-iterator/go"
 | 
			
		||||
	"github.com/rs/zerolog/log"
 | 
			
		||||
	"github.com/spf13/viper"
 | 
			
		||||
@@ -26,8 +27,8 @@ func NewServer() *App {
 | 
			
		||||
	app := fiber.New(fiber.Config{
 | 
			
		||||
		DisableStartupMessage: true,
 | 
			
		||||
		EnableIPValidation:    true,
 | 
			
		||||
		ServerHeader:          "Hypernet.Passport",
 | 
			
		||||
		AppName:               "Hypernet.Passport",
 | 
			
		||||
		ServerHeader:          "HyperNet.Passport",
 | 
			
		||||
		AppName:               "HyperNet.Passport",
 | 
			
		||||
		ProxyHeader:           fiber.HeaderXForwardedFor,
 | 
			
		||||
		JSONEncoder:           jsoniter.ConfigCompatibleWithStandardLibrary.Marshal,
 | 
			
		||||
		JSONDecoder:           jsoniter.ConfigCompatibleWithStandardLibrary.Unmarshal,
 | 
			
		||||
@@ -51,16 +52,15 @@ func NewServer() *App {
 | 
			
		||||
		},
 | 
			
		||||
	}))
 | 
			
		||||
 | 
			
		||||
	app.Use(logger.New(logger.Config{
 | 
			
		||||
		Format: "${status} | ${latency} | ${method} ${path}\n",
 | 
			
		||||
		Output: log.Logger,
 | 
			
		||||
	app.Use(fiberzerolog.New(fiberzerolog.Config{
 | 
			
		||||
		Logger: &log.Logger,
 | 
			
		||||
	}))
 | 
			
		||||
 | 
			
		||||
	app.Use(sec.ContextMiddleware(IReader))
 | 
			
		||||
	app.Use(authkit.ParseAccountMiddleware)
 | 
			
		||||
 | 
			
		||||
	admin.MapAdminAPIs(app, "/api/admin")
 | 
			
		||||
	api.MapAPIs(app, "/api")
 | 
			
		||||
	admin.MapControllers(app, "/api/admin")
 | 
			
		||||
	api.MapControllers(app, "/api")
 | 
			
		||||
 | 
			
		||||
	return &App{app}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								pkg/main.go
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								pkg/main.go
									
									
									
									
									
								
							@@ -2,18 +2,19 @@ package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"git.solsynth.dev/hypernet/nexus/pkg/nex/sec"
 | 
			
		||||
	"github.com/fatih/color"
 | 
			
		||||
	"os"
 | 
			
		||||
	"os/signal"
 | 
			
		||||
	"syscall"
 | 
			
		||||
 | 
			
		||||
	"git.solsynth.dev/hypernet/nexus/pkg/nex/sec"
 | 
			
		||||
	"github.com/fatih/color"
 | 
			
		||||
 | 
			
		||||
	pkg "git.solsynth.dev/hypernet/passport/pkg/internal"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/gap"
 | 
			
		||||
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/grpc"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/http"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/services"
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/web"
 | 
			
		||||
	"github.com/robfig/cron/v3"
 | 
			
		||||
 | 
			
		||||
	"git.solsynth.dev/hypernet/passport/pkg/internal/cache"
 | 
			
		||||
@@ -55,7 +56,7 @@ func main() {
 | 
			
		||||
	if reader, err := sec.NewInternalTokenReader(viper.GetString("security.internal_public_key")); err != nil {
 | 
			
		||||
		log.Error().Err(err).Msg("An error occurred when reading internal public key for jwt. Authentication related features will be disabled.")
 | 
			
		||||
	} else {
 | 
			
		||||
		http.IReader = reader
 | 
			
		||||
		web.IReader = reader
 | 
			
		||||
		log.Info().Msg("Internal jwt public key loaded.")
 | 
			
		||||
	}
 | 
			
		||||
	if reader, err := sec.NewJwtReader(viper.GetString("security.public_key")); err != nil {
 | 
			
		||||
@@ -89,7 +90,7 @@ func main() {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// App
 | 
			
		||||
	go http.NewServer().Listen()
 | 
			
		||||
	go web.NewServer().Listen()
 | 
			
		||||
 | 
			
		||||
	// Grpc App
 | 
			
		||||
	go grpc.NewServer().Listen()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user