func (db *memberStore) AddMember(roomId ct.RoomId, userId ct.UserId) types.Error { inserted, err := db.idMap.Put(ct.Id(roomId), ct.Id(userId)) if err != nil { return types.InternalError(err) } if !inserted { msg := fmt.Sprintf("user %s is already a member of the room %s", userId, roomId) return types.ServerError(msg) } return nil }
func (db *memberStore) RemoveMember(roomId ct.RoomId, userId ct.UserId) types.Error { deleted, err := db.idMap.Delete(ct.Id(roomId), ct.Id(userId)) if err != nil { return types.InternalError(err) } if !deleted { msg := fmt.Sprintf("user %s is not a member of the room %s", userId, roomId) return types.ServerError(msg) } return nil }
func (s userService) SetPassword(user, caller ct.UserId, password string) types.Error { if user != caller { return types.ForbiddenError("can't change the password of other users") } hash, err := bcrypt.GenerateFromPassword([]byte(password), 10) if err != nil { return types.ServerError("failed to generate password: " + err.Error()) } if err := s.users.SetUserPasswordHash(user, string(hash)); err != nil { return err } return nil }