creating admin page

parent f95ce8a2
Pipeline #1076 failed with stages
in 0 seconds
class AdminsController < ApplicationController
def index
@cities = City.all
@industries = Industry.all
@count_apply_job = JobApplied.count
@user_apply_job = JobApplied.all.order(updated_at: :desc).page(params[:page]).per(Job::LIMIT_PAGE)
@months = [['None', '']]
(1..12).each {|m| @months << [Date::MONTHNAMES[m], m]}
binding.pry
end
def new
redirect_to admin_page_path if signed_in? && current_user.admin?
end
def create
user = User.find_by(email: params[:admin][:email].downcase, admin: true)
if user && user.authenticate(params[:admin][:password])
sign_in user
redirect_to admin_page_path
else
flash.now[:danger] = Settings.user.sign_in.failed
render :new
end
end
def destroy
sign_out
redirect_to root_path
end
private
def sign_out_current_user
sign_out if signed_in? && current_user.admin.nil?
end
end
class SessionsController < ApplicationController class SessionsController < ApplicationController
def new def new
redirect_to my_page_path if signed_in? return redirect_to admin_page_path if signed_in? && current_user.admin?
redirect_to my_page_path if signed_in? && current_user.admin.nil?
end end
def create def create
user = User.find_by(email: params[:session][:email].downcase) user = User.find_by(email: params[:session][:email].downcase, admin: nil)
if user && user.authenticate(params[:session][:password]) if user && user.authenticate(params[:session][:password])
sign_in user sign_in user
redirect_back_or my_page_path redirect_back_or my_page_path
......
class Admin < ApplicationRecord
before_create :create_remember_token
def self.new_remember_token
SecureRandom.urlsafe_base64
end
def self.digest(token)
Digest::SHA1.hexdigest(token.to_s)
end
private
def create_remember_token
self.remember_token = User.digest(User.new_remember_token)
end
end
...@@ -5,6 +5,8 @@ class JobApplied < ApplicationRecord ...@@ -5,6 +5,8 @@ class JobApplied < ApplicationRecord
belongs_to :user belongs_to :user
belongs_to :job belongs_to :job
LIMIT_PAGE = 20
validates :name, presence: true, length: { maximum: 200 } validates :name, presence: true, length: { maximum: 200 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(?:\.[a-z\d\-]+)*\.[a-z]+\z/i VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(?:\.[a-z\d\-]+)*\.[a-z]+\z/i
validates :email, presence: true, length: { maximum: 200 }, format: { with: VALID_EMAIL_REGEX } validates :email, presence: true, length: { maximum: 200 }, format: { with: VALID_EMAIL_REGEX }
......
<div class="border border-dark rounded">
<div class="job-details">
<div class="title">Job title:
<%= link_to job_detail_path(info_application.id) do %>
<strong><%= info_application.job.title %></strong>
<% end %>
</div>
<div class="name">Name:
<%= info_application.name %>
</div>
<div class="cv">CV:
<%= link_to info_application.cv_user.identifier, info_application.cv_user.url, download: info_application.cv_user.identifier %>
</div>
<div class="row">
<div class="col-6">Email:
<%= info_application.email %>
</div>
<div class="col-6 salary">Applied at: <%= info_application.updated_at.strftime('%d/%m/%Y') %></div>
</div>
</div>
</div>
<br>
<div class="row panigation">
<div class="col-12 d-flex justify-content-end paginate-jobs">
<%= paginate @user_apply_job, outer_window: 3, window: 2 %>
</div>
</div>
<div class="search-bar">
<div class="search">
Email: <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
</div>
<div class="city-options">
City:
<select class="form-control" id="exampleFormControlSelect1">
<option>All</option>
<%= @cities.each do |city| %>
<option><%= city.name %></option>
<% end %>
</select>
</div>
<div class="industry-options">
Industry:
<select class="form-control" id="exampleFormControlSelect1">
<option>All</option>
<%= @industries.each do |industry| %>
<option><%= industry.name %></option>
<% end %>
</select>
</div>
<div class="row">
<div class="text col-2">Date</div>
<select class="form-control" id="exampleFormControlSelect1">
<%= @months.each do |month| %>
<option><%= month %></option>
<% end %>
</select>
</div>
<div class="search-btn">
<button class="btn btn-primary" type="submit">Search</button>
</div>
</div>
<% provide(:title, 'Admin Page') %>
<div class="container">
<div><h1>Applied Jobs</h1></div>
<%= render "search_condition" %>
<div class="row total-apply-jobs">
<div class="col-4"><strong>Total: <%= @count_apply_job %> applications</strong></div>
</div>
<%= render "pagination" %>
<div class="apply-job-list">
<%= render partial: "information", collection: @user_apply_job, as: :info_application %>
</div>
<%= render "pagination" %>
</div>
<% provide(:title, "Admin Sign In") %>
<div class="container">
<%= render 'layouts/flash' %>
<h1 class="text-center login-label">Admin Login</h1>
<div class="form-login">
<div class="row form d-flex justify-content-center">
<%= form_for(:admin, url: admins_path) do |f| %>
<div class="email-field">
<div class="col-4-sm">
<%= f.label :email %>
</div>
<div class="col-8-sm">
<%= f.text_field :email %>
</div>
</div>
<div class="password-field">
<div class="col-4-sm">
<%= f.label :password %>
</div>
<div class="col-8-sm">
<%= f.password_field :password %>
</div>
</div>
<%= f.submit 'Login', class: 'btn btn-outline-primary btn-lg login-btn' %>
<% end %>
</div>
</div>
</div>
...@@ -4,6 +4,9 @@ ...@@ -4,6 +4,9 @@
<%= link_to image_tag("logo_venjob.png", alt: "Logo", id: "logo_venjob", width: 120), root_path %> <%= link_to image_tag("logo_venjob.png", alt: "Logo", id: "logo_venjob", width: 120), root_path %>
<nav> <nav>
<ul class="navbar-nav mr-auto"> <ul class="navbar-nav mr-auto">
<% if signed_in? && current_user.admin? %>
<li><%= link_to "Log Out", admin_logout_path , class: "nav-item nav-link", method: "delete" %></li>
<% else %>
<% if signed_in? %> <% if signed_in? %>
<li><%= link_to "My Page", my_page_path , class: "nav-item nav-link" %></li> <li><%= link_to "My Page", my_page_path , class: "nav-item nav-link" %></li>
<li><%= link_to "Log Out", logout_path , class: "nav-item nav-link", method: "delete" %></li> <li><%= link_to "Log Out", logout_path , class: "nav-item nav-link", method: "delete" %></li>
...@@ -13,6 +16,7 @@ ...@@ -13,6 +16,7 @@
<% end %> <% end %>
<li><%= link_to "Favorite", '#', class: "nav-item nav-link" %></li> <li><%= link_to "Favorite", '#', class: "nav-item nav-link" %></li>
<li><%= link_to "History", '#', class: "nav-item nav-link" %></li> <li><%= link_to "History", '#', class: "nav-item nav-link" %></li>
<% end %>
</ul> </ul>
</nav> </nav>
</div> </div>
......
...@@ -33,6 +33,11 @@ Rails.application.routes.draw do ...@@ -33,6 +33,11 @@ Rails.application.routes.draw do
get 'jobs/industry/:converted_name', to: 'jobs#industry_jobs', as: :industry_jobs get 'jobs/industry/:converted_name', to: 'jobs#industry_jobs', as: :industry_jobs
get 'jobs/company/:converted_name', to: 'jobs#company_jobs', as: :company_jobs get 'jobs/company/:converted_name', to: 'jobs#company_jobs', as: :company_jobs
resources :admins, only: [:new, :create, :destroy, :index]
get 'admin/login', to: 'admins#new', as: :admin_login
delete 'admin/logout', to: 'admins#destroy', as: :admin_logout
get 'admin/applies', to: 'admins#index', as: :admin_page
resources :applied_jobs, only: [:new, :create] resources :applied_jobs, only: [:new, :create]
resources :reset_passwords, only: [:edit, :update] resources :reset_passwords, only: [:edit, :update]
resources :confirmations, only: [:new] resources :confirmations, only: [:new]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment