summaryrefslogtreecommitdiffstats
path: root/server/user.go
diff options
context:
space:
mode:
Diffstat (limited to 'server/user.go')
-rw-r--r--server/user.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/server/user.go b/server/user.go
new file mode 100644
index 0000000..204fbbe
--- /dev/null
+++ b/server/user.go
@@ -0,0 +1,42 @@
+package server
+
+import (
+ "net"
+
+ "git.rctt.net/solec/core"
+)
+
+type User struct {
+ Name string
+ Conns map[net.Conn]struct{}
+}
+
+func NewUser(conn net.Conn, auth core.Auth) User {
+ u := User{
+ Name: auth.Name,
+ Conns: make(map[net.Conn]struct{}),
+ }
+
+ u.Conns[conn] = struct{}{}
+ return u
+}
+
+func (u *User) Send(payload core.Wrapper) error {
+ for c := range u.Conns {
+ if err := core.Send(c, payload); err != nil {
+ return err
+ }
+ }
+
+ return nil
+}
+
+func (u *User) Auth(pass string) error {
+ // TODO: Implement auth
+
+ if pass != "valid" {
+ return core.ErrAuthInvalidPassword
+ }
+
+ return nil
+}