diff --git a/app/controllers/management/users_controller.rb b/app/controllers/management/users_controller.rb
index 48cd23d8bdb6d3567279befb67c382aa209a7f0d..6522fd5a3b9cb5a8b29b34e8124ab720990aa010 100644
--- a/app/controllers/management/users_controller.rb
+++ b/app/controllers/management/users_controller.rb
@@ -3,10 +3,7 @@ class Management::UsersController < ManagementController
   before_action :set_roles, only: [:new, :edit]
 
   def index
-    #trocar por chamada ao repositorio
-    @users = User.all
-
-
+    @users = user_repository.all
   end
 
   # GET /users/1
@@ -26,10 +23,8 @@ class Management::UsersController < ManagementController
   # POST /users
   # POST /users.json
   def create
-
     @user = User.new(user_params)
-    #trocar por chamada ao repositorio
-    @user.roles.ids = Role.all.ids
+    @user.roles.ids = role_repository.all.ids
 
     respond_to do |format|
       if user_repository.save @user
@@ -65,10 +60,14 @@ class Management::UsersController < ManagementController
 
   def change_roles
     @user.roles = []
-    #trocar por chamada ao repositório
-    @user.roles << Role.find_by_id(params[:role_id])
+    @user.roles << role_repository.find_by_id(params[:role_id])
+
     respond_to do |format|
-      format.html {redirect_to :back, notice: "Usuário #{@user.name} definido como #{@user.roles[0].name}"}
+      if user_repository.save @user
+        format.html {redirect_to :back, notice: "Usuário #{@user.name} definido como #{@user.roles[0].name}"}
+      else
+        format.html {redirect_to :back, notice: "Erro na atribuição!"}
+      end
     end
   end
 
@@ -85,7 +84,7 @@ class Management::UsersController < ManagementController
   end
 
   def set_roles
-    @roles = Role.all
+    @roles = role_repository.all
   end
 
 end
diff --git a/app/repositories/active_record/role_repository.rb b/app/repositories/active_record/role_repository.rb
new file mode 100644
index 0000000000000000000000000000000000000000..b2ad728282520446253f027d12ed622c1c31e193
--- /dev/null
+++ b/app/repositories/active_record/role_repository.rb
@@ -0,0 +1,19 @@
+class ActiveRecord::RoleRepository
+
+  def save(role)
+    role.save
+  end
+
+  def save!(role)
+    role.save!
+  end
+
+  def method_missing(method_name, *arguments, &block)
+    Role.send(method_name, *arguments, &block)
+  end
+
+  def respond_to?(method_name, include_private = false)
+    Role.respond_to?(method_name) || super
+  end
+
+end
diff --git a/app/repositories/orient_db/user_repository.rb b/app/repositories/orient_db/user_repository.rb
index 7a904ba1cb44a3d9391054b95662d31878103d9a..6fa51a2e45a37e9e5ef5f3612dc610e6004b1fe5 100644
--- a/app/repositories/orient_db/user_repository.rb
+++ b/app/repositories/orient_db/user_repository.rb
@@ -31,6 +31,11 @@ module OrientDb
       (result.count > 0)
     end
 
+    def all
+      result = connection.query sprintf("SELECT FROM USER")
+      
+    end
+
     private
 
     def odb_class
diff --git a/app/repositories/repositories_proxy.rb b/app/repositories/repositories_proxy.rb
index 05477b70d2bb68b2d87b9d81bf8d55d02e7c5c48..3a878e891b086460681811471f3526e6abce6930 100644
--- a/app/repositories/repositories_proxy.rb
+++ b/app/repositories/repositories_proxy.rb
@@ -38,6 +38,10 @@ module RepositoriesProxy
     application_repository.for(:user)
   end
 
+  def role_repository
+    application_repository.for(:role)
+  end
+
   private
 
   def application_repository
diff --git a/config/initializers/repositories/repositories.rb b/config/initializers/repositories/repositories.rb
index f7d3c35d3a535fbda79aab1fc23ca0e80bc2451b..f4fd53115a5580798d350894171ba471161185ce 100644
--- a/config/initializers/repositories/repositories.rb
+++ b/config/initializers/repositories/repositories.rb
@@ -30,6 +30,7 @@ Repository::Environments.create :development do |repository|
   repository.register :collection, OrientDb::CollectionRepository.new(OrientDb::Client.instance)
   repository.register :carousel, ActiveRecord::CarouselRepository.new
   repository.register :complaint, OrientDb::ComplaintRepository.new(OrientDb::Client.instance)
+  repository.register :role, ActiveRecord::RoleRepository.new
 end
 
 Repository::Environments.create :test do |repository|
@@ -41,6 +42,7 @@ Repository::Environments.create :test do |repository|
   repository.register :subject, OrientDb::SubjectRepository.new(OrientDb::Client.instance)
   repository.register :attribute, OrientDb::AttributeRepository.new(OrientDb::Client.instance)
   repository.register :collection, OrientDb::CollectionRepository.new(OrientDb::Client.instance)
+  repository.register :role, ActiveRecord::RoleRepository.new
 end
 
 Repository::Environments.create :production do |repository|
@@ -52,4 +54,5 @@ Repository::Environments.create :production do |repository|
   repository.register :subject, OrientDb::SubjectRepository.new(OrientDb::Client.instance)
   repository.register :attribute, OrientDb::AttributeRepository.new(OrientDb::Client.instance)
   repository.register :collection, OrientDb::CollectionRepository.new(OrientDb::Client.instance)
+  repository.register :role, ActiveRecord::RoleRepository.new
 end