]> git.r.bdr.sh - rbdr/mobius/blobdiff - hotline/server.go
Merge pull request #46 from jhalter/implement_access_no_agreement
[rbdr/mobius] / hotline / server.go
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) {