Sha256: bba7643544a8ab2c485933245b7763394fda5e5efe5d97a7a3fba109b1597bbd

Contents?: true

Size: 1.49 KB

Versions: 3

Compression:

Stored size: 1.49 KB

Contents

require 'mongo'
require File.join( File.dirname(__FILE__), %w[zone.rb] )

module Mongo3
  # Administer users on a connection  
  class User < Mongo3::Zone
    
    # add a new user    
    def add( path, user_name, password )
      connect_for( path ) do |con|
        admin_db  = con.db('admin')
        user_cltn = admin_db[Mongo::DB::SYSTEM_USER_COLLECTION]        

        row = { :user => user_name }        
        user = user_cltn.find_one( row )
        raise "User #{user_name} already exists!" if user
        
        row[:pwd] = admin_db.send( :hash_password, user_name, password )
        user_cltn.save( row )
      end     
    end
    
    def rename( zone, old_name, new_name )
    end
    
    def delete( path, id )
      connect_for( path ) do |con|
        res = users( con ).remove( :_id => Mongo::ObjectID.from_string( id ) )
      end      
    end
        
    def list( path, page, per_page=10 )
      connect_for( path ) do |con|
        user_cltn = users( con )
        list = WillPaginate::Collection.create( page, per_page, user_cltn.size ) do |pager|
          offset = (page-1)*per_page
          results = user_cltn.find( {}, 
            :sort  => [['user', Mongo::ASCENDING]],
            :skip  => offset,
            :limit => per_page ).to_a          
          return pager.replace( results )
        end
      end
    end
    
    private    
      
      def users( con )
        admin = con.db('admin')
        admin[Mongo::DB::SYSTEM_USER_COLLECTION]        
      end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mongo3-0.0.9 lib/mongo3/user.rb
mongo3-0.0.8 lib/mongo3/user.rb
mongo3-0.0.7 lib/mongo3/user.rb