summaryrefslogtreecommitdiff
path: root/destroy-user-db
blob: cd17eb5280c2f9811f92d81f2e842cee88670af8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/ruby

require_relative "lib/leap"

def main()
  parse_opts
  server   = LEAP::Server.new
  users_db = LEAP::Users.new(server)
  record   = users_db.find_by_login($username)
  return_code = 0
  if record.nil?
    puts "Username #{$username} does not exist."
    exit 1
  end
  user_id = record.id
  dbname   = "user-#{user_id}"
  identities_db = server.database('identities')
  all_users_db = server.database('users')
  begin
    server.database(dbname).delete!
    puts "Deleted DB #{dbname}"
  rescue RestClient::ResourceNotFound
    puts "DB does not exist: #{dbname}"
    return_code=1
  end
  if $destroy_identities == TRUE
    identities_db.view('Identity/by_user_id', :reduce => false, :startkey => user_id, :endkey => user_id)['rows'].each do |row|
      begin
        doc = identities_db.get(row['id'])
        identities_db.delete_doc(doc)
        puts "  deleted #{identities_db.name}/#{row['id']}"
      rescue RestClient::ResourceNotFound
        puts "identities DB does not exist: #{doc}"
        return_code=1
      end
    end 
    all_users_db.view('User/by_login', :reduce => false, :startkey => $username, :endkey => $username)['rows'].each do |row|
      begin
        doc = all_users_db.get(user_id)
        all_users_db.delete_doc(doc)
        puts "  deleted #{user_id} from user db"
      rescue RestClient::ResourceNotFound
        puts "user not found in user db: #{user_id}"
          return_code=1
      end
    end
  end
  exit return_code
end

def parse_opts()
  $username = nil
  while cmd = ARGV.shift
    case cmd
      when "--username"
        $username = ARGV.shift
      when "--destroy-identities"
        $destroy_identities=TRUE
      else
        usage
    end
  end
  unless $username
    usage
  end
end

def usage()
  puts "#{$0} COMMAND"
  puts "Commands:"
  puts "  --username USERNAME - destroy the user db corresponding to USERNAME."
  puts "  --destroy-identities - re-enable user for future sign-up"
  exit(1)
end

main()