Changeset 329 in code for trunk/server.go


Ignore:
Timestamp:
Jun 8, 2020, 8:30:09 PM (5 years ago)
Author:
delthas
Message:

Add support for the user create admin service command

This adds support for user create, a new service command only accessible
to admin users. This lets users create other users on the fly and makes
soju start the user routine immediately; unlike sojuctl which currently
requires closing soju, creating the user, and starting soju again.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/server.go

    r323 r329  
    8989}
    9090
     91func (s *Server) createUser(user *User) (*user, error) {
     92        s.lock.Lock()
     93        defer s.lock.Unlock()
     94
     95        if _, ok := s.users[user.Username]; ok {
     96                return nil, fmt.Errorf("user %q already exists", user.Username)
     97        }
     98
     99        err := s.db.StoreUser(user)
     100        if err != nil {
     101                return nil, fmt.Errorf("could not create user in db: %v", err)
     102        }
     103
     104        s.Logger.Printf("starting bouncer for new user %q", user.Username)
     105        u := newUser(s, user)
     106        s.users[u.Username] = u
     107        go u.run()
     108        return u, nil
     109}
     110
    91111func (s *Server) getUser(name string) *user {
    92112        s.lock.Lock()
Note: See TracChangeset for help on using the changeset viewer.