]> git.r.bdr.sh - rbdr/mobius/commitdiff
Implement Don't Show Agreement permission
authorJeff Halter <redacted>
Sun, 26 Jun 2022 04:10:55 +0000 (21:10 -0700)
committerJeff Halter <redacted>
Sun, 26 Jun 2022 04:10:55 +0000 (21:10 -0700)
hotline/access.go
hotline/field.go
hotline/server.go

index 1bee72c00b4046c159e3a01b88768d00b24b68df..bc3cb0d8451e278e685959cd1150c66cba442a67 100644 (file)
@@ -27,14 +27,14 @@ const (
        accessModifyUser = 17
        // accessChangeOwnPass    = 18 // Documented but unused?
        // accessSendPrivMsg      = 19 // This doesn't do what it seems like it should do. TODO: Investigate
-       accessNewsReadArt    = 20
-       accessNewsPostArt    = 21
-       accessDisconUser     = 22 // Toggles red user name in user list
-       accessCannotBeDiscon = 23
-       accessGetClientInfo  = 24
-       accessUploadAnywhere = 25
-       accessAnyName        = 26
-       // accessNoAgreement      = 27
+       accessNewsReadArt      = 20
+       accessNewsPostArt      = 21
+       accessDisconUser       = 22 // Toggles red user name in user list
+       accessCannotBeDiscon   = 23
+       accessGetClientInfo    = 24
+       accessUploadAnywhere   = 25
+       accessAnyName          = 26
+       accessNoAgreement      = 27
        accessSetFileComment   = 28
        accessSetFolderComment = 29
        accessViewDropBoxes    = 30
index aef790d171351e3c78ce8e362a01166e4a3beb74..c9db3d9adce3418f5d5a83bb261635eb403500b6 100644 (file)
@@ -24,6 +24,7 @@ const fieldChatID = 114
 const fieldChatSubject = 115
 const fieldWaitingCount = 116
 const fieldBannerType = 152
+const fieldNoServerAgreement = 152
 const fieldVersion = 160
 const fieldCommunityBannerID = 161
 const fieldServerName = 162
index 41b9a97967021de4b97e3b709f90d9055bec45b9..f3574dea99e0b047b6ab78776311c0b850269803 100644 (file)
@@ -653,8 +653,12 @@ func (s *Server) handleNewConnection(ctx context.Context, rwc io.ReadWriteCloser
        // Send user access privs so client UI knows how to behave
        c.Server.outbox <- *NewTransaction(tranUserAccess, c.ID, NewField(fieldUserAccess, *c.Account.Access))
 
-       // Show agreement to client
-       c.Server.outbox <- *NewTransaction(tranShowAgreement, c.ID, NewField(fieldData, s.Agreement))
+       // Users with accessNoAgreement do not receive the server agreement on login
+       if c.Authorize(accessNoAgreement) {
+               c.Server.outbox <- *NewTransaction(tranShowAgreement, c.ID, NewField(fieldNoServerAgreement, []byte{1}))
+       } else {
+               c.Server.outbox <- *NewTransaction(tranShowAgreement, c.ID, NewField(fieldData, s.Agreement))
+       }
 
        // Used simplified hotline v1.2.3 login flow for clients that do not send login info in tranAgreed
        if c.Version == nil || bytes.Equal(c.Version, nostalgiaVersion) {