- Read Tutorial
- Watch Guide Video
Now that the administrate
dashboard is installed properly, let's start customizing it.
Go to app/dashboards/admin_user_dashboard.rb
. Here we can alter the settings that will be used for the AdminUser
page in the admin dashboard. Let's use the following code to customize the look and feel.
# app/dashboards/admin_user_dashboard.rb require "administrate/base_dashboard" class AdminUserDashboard < Administrate::BaseDashboard ATTRIBUTE_TYPES = { posts: Field::HasMany, id: Field::Number, email: Field::String, password: Field::String, sign_in_count: Field::Number, current_sign_in_at: Field::DateTime, last_sign_in_at: Field::DateTime, current_sign_in_ip: Field::String.with_options(searchable: false), last_sign_in_ip: Field::String.with_options(searchable: false), first_name: Field::String, last_name: Field::String, created_at: Field::DateTime, updated_at: Field::DateTime, type: Field::String, }.freeze COLLECTION_ATTRIBUTES = [ :posts, :id, :email, ].freeze SHOW_PAGE_ATTRIBUTES = [ :posts, :id, :email, :sign_in_count, :current_sign_in_at, :last_sign_in_at, :current_sign_in_ip, :last_sign_in_ip, :first_name, :last_name, :created_at, :updated_at, :type, ].freeze FORM_ATTRIBUTES = [ :email, :password, :first_name, :last_name, :type, ].freeze end
If you start up the Rails server and check in the browser, this is how the new AdminUser
form will look.
Now, let's do the same thing to our users. Open the user_dashboard.rb
file and update it to include code that is custom to users.
# app/dashboards/user_dashboard.rb require "administrate/base_dashboard" class UserDashboard < Administrate::BaseDashboard ATTRIBUTE_TYPES = { posts: Field::HasMany, id: Field::Number, email: Field::String, password: Field::String, sign_in_count: Field::Number, current_sign_in_at: Field::DateTime, last_sign_in_at: Field::DateTime, current_sign_in_ip: Field::String.with_options(searchable: false), last_sign_in_ip: Field::String.with_options(searchable: false), first_name: Field::String, last_name: Field::String, created_at: Field::DateTime, updated_at: Field::DateTime, type: Field::String, }.freeze COLLECTION_ATTRIBUTES = [ :posts, :id, :email, :type ].freeze SHOW_PAGE_ATTRIBUTES = [ :posts, :id, :email, :sign_in_count, :current_sign_in_at, :last_sign_in_at, :current_sign_in_ip, :last_sign_in_ip, :first_name, :last_name, :created_at, :updated_at, :type, ].freeze FORM_ATTRIBUTES = [ :email, :password, :first_name, :last_name, ].freeze end
Next, let's check passwords here. Though they are visible while creating the form, it doesn't show up anywhere else, and that's fine for our prototype application. We can change this type of behavior later on before the app goes live. If you open up the Rails console, we can verify that the password has been encrypted. Use this command:
User.find_by_email("regular@user.com").encrypted_password
As you can see, an encrypted password was generated based on the password that was entered in the form, just like this:
So, this is all that we need to do to build an admin dashboard from a core functionality point of view.