initial
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | .idea | ||||||
							
								
								
									
										3
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | You may use this software any way you like with the following exceptions: | ||||||
|  | - You may not provide this software as a paid service or free and asking for donations | ||||||
|  | Only I am allowed to do so. | ||||||
| @@ -0,0 +1,7 @@ | |||||||
|  | # AccountServer | ||||||
|  | For those who don't want to deal with the complexity of OpenID-Connect, | ||||||
|  | but still want a complete Authentication solution. | ||||||
|  |  | ||||||
|  | ## Status | ||||||
|  |  | ||||||
|  | Development started 19.08.2024 | ||||||
							
								
								
									
										51
									
								
								cmd/root.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								cmd/root.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | |||||||
|  | /* | ||||||
|  | Copyright © 2024 Darko Luketic <info@icod.de> | ||||||
|  |  | ||||||
|  | */ | ||||||
|  | package cmd | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"os" | ||||||
|  |  | ||||||
|  | 	"github.com/spf13/cobra" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | // rootCmd represents the base command when called without any subcommands | ||||||
|  | var rootCmd = &cobra.Command{ | ||||||
|  | 	Use:   "accountserver", | ||||||
|  | 	Short: "A brief description of your application", | ||||||
|  | 	Long: `A longer description that spans multiple lines and likely contains | ||||||
|  | examples and usage of using your application. For example: | ||||||
|  |  | ||||||
|  | Cobra is a CLI library for Go that empowers applications. | ||||||
|  | This application is a tool to generate the needed files | ||||||
|  | to quickly create a Cobra application.`, | ||||||
|  | 	// Uncomment the following line if your bare application | ||||||
|  | 	// has an action associated with it: | ||||||
|  | 	// Run: func(cmd *cobra.Command, args []string) { }, | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Execute adds all child commands to the root command and sets flags appropriately. | ||||||
|  | // This is called by main.main(). It only needs to happen once to the rootCmd. | ||||||
|  | func Execute() { | ||||||
|  | 	err := rootCmd.Execute() | ||||||
|  | 	if err != nil { | ||||||
|  | 		os.Exit(1) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func init() { | ||||||
|  | 	// Here you will define your flags and configuration settings. | ||||||
|  | 	// Cobra supports persistent flags, which, if defined here, | ||||||
|  | 	// will be global for your application. | ||||||
|  |  | ||||||
|  | 	// rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.accountserver.yaml)") | ||||||
|  |  | ||||||
|  | 	// Cobra also supports local flags, which will only run | ||||||
|  | 	// when this action is called directly. | ||||||
|  | 	rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
							
								
								
									
										3
									
								
								ent/generate.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								ent/generate.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | package ent | ||||||
|  |  | ||||||
|  | //go:generate go run -mod=mod entgo.io/ent/cmd/ent generate ./schema | ||||||
							
								
								
									
										36
									
								
								ent/schema/account.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								ent/schema/account.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | |||||||
|  | package schema | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"entgo.io/ent" | ||||||
|  | 	"entgo.io/ent/dialect/entsql" | ||||||
|  | 	"entgo.io/ent/schema/edge" | ||||||
|  | 	"entgo.io/ent/schema/field" | ||||||
|  | 	"github.com/google/uuid" | ||||||
|  | 	"time" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // Account holds the schema definition for the Account entity. | ||||||
|  | type Account struct { | ||||||
|  | 	ent.Schema | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Fields of the Account. | ||||||
|  | func (Account) Fields() []ent.Field { | ||||||
|  | 	return []ent.Field{ | ||||||
|  | 		field.UUID("id", uuid.UUID{}).Unique().Immutable().Annotations(&entsql.Annotation{Default: "gen_random_uuid()"}), | ||||||
|  | 		field.Time("created_at").Default(time.Now).Immutable(), | ||||||
|  | 		field.Time("updated_at").Default(time.Now).UpdateDefault(time.Now), | ||||||
|  | 		field.String("nickname"), | ||||||
|  | 		field.String("name"), | ||||||
|  | 		field.Bytes("secret"), | ||||||
|  | 		field.Bytes("aes").MinLen(16).MaxLen(32), | ||||||
|  | 		field.Bytes("x509"), | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Edges of the Account. | ||||||
|  | func (Account) Edges() []ent.Edge { | ||||||
|  | 	return []ent.Edge{ | ||||||
|  | 		edge.To("emails", Email.Type), | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										33
									
								
								ent/schema/email.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								ent/schema/email.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | |||||||
|  | package schema | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"entgo.io/ent" | ||||||
|  | 	"entgo.io/ent/dialect/entsql" | ||||||
|  | 	"entgo.io/ent/schema/edge" | ||||||
|  | 	"entgo.io/ent/schema/field" | ||||||
|  | 	"github.com/google/uuid" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // Email holds the schema definition for the Email entity. | ||||||
|  | type Email struct { | ||||||
|  | 	ent.Schema | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Fields of the Email. | ||||||
|  | func (Email) Fields() []ent.Field { | ||||||
|  | 	return []ent.Field{ | ||||||
|  | 		field.UUID("id", uuid.UUID{}).Unique().Immutable().Annotations(&entsql.Annotation{Default: "gen_random_uuid()"}), | ||||||
|  | 		field.String("email"), | ||||||
|  | 		field.Bool("primary").Default(false), | ||||||
|  | 		field.Bool("verified").Default(false), | ||||||
|  | 		field.String("verification_code").Optional(), | ||||||
|  | 		field.String("reset_code").Optional(), | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Edges of the Email. | ||||||
|  | func (Email) Edges() []ent.Edge { | ||||||
|  | 	return []ent.Edge{ | ||||||
|  | 		edge.From("accounts", Account.Type).Ref("emails").Unique(), | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										14
									
								
								go.mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								go.mod
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | module code.icod.de/auth/accountserver | ||||||
|  |  | ||||||
|  | go 1.23.0 | ||||||
|  |  | ||||||
|  | require ( | ||||||
|  | 	entgo.io/ent v0.14.0 | ||||||
|  | 	github.com/google/uuid v1.3.0 | ||||||
|  | 	github.com/spf13/cobra v1.8.1 | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | require ( | ||||||
|  | 	github.com/inconshreveable/mousetrap v1.1.0 // indirect | ||||||
|  | 	github.com/spf13/pflag v1.0.5 // indirect | ||||||
|  | ) | ||||||
							
								
								
									
										21
									
								
								go.sum
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								go.sum
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | |||||||
|  | entgo.io/ent v0.14.0 h1:EO3Z9aZ5bXJatJeGqu/EVdnNr6K4mRq3rWe5owt0MC4= | ||||||
|  | entgo.io/ent v0.14.0/go.mod h1:qCEmo+biw3ccBn9OyL4ZK5dfpwg++l1Gxwac5B1206A= | ||||||
|  | github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= | ||||||
|  | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||||
|  | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||||
|  | github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= | ||||||
|  | github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||||
|  | github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= | ||||||
|  | github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= | ||||||
|  | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||||
|  | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||||
|  | github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= | ||||||
|  | github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= | ||||||
|  | github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= | ||||||
|  | github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= | ||||||
|  | github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= | ||||||
|  | github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= | ||||||
|  | github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= | ||||||
|  | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||||
|  | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | ||||||
|  | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||||
							
								
								
									
										11
									
								
								main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								main.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | |||||||
|  | /* | ||||||
|  | Copyright © 2024 Darko Luketic <info@icod.de> | ||||||
|  |  | ||||||
|  | */ | ||||||
|  | package main | ||||||
|  |  | ||||||
|  | import "code.icod.de/auth/accountserver/cmd" | ||||||
|  |  | ||||||
|  | func main() { | ||||||
|  | 	cmd.Execute() | ||||||
|  | } | ||||||
							
								
								
									
										9
									
								
								service/service.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								service/service.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | package service | ||||||
|  |  | ||||||
|  | type Service struct { | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func NewService() *Service { | ||||||
|  | 	s := new(Service) | ||||||
|  | 	return s | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user