Class: Mks::Auth::UsersController

Inherits:
ApplicationController show all
Defined in:
app/controllers/mks/auth/users_controller.rb

Instance Method Summary collapse

Methods inherited from ApplicationController

#app_code, #current_user, #current_user_id, #logged_in?

Instance Method Details

#createObject



33
34
35
36
37
38
39
40
41
42
# File 'app/controllers/mks/auth/users_controller.rb', line 33

def create
  @user = User.new(user_params)
  app_module = ApplicationModule.find_by(code: app_code)
  @user.application_modules = [app_module]
  if @user.save
    render json: { success: true, data: @user }
  else
    render json: { success: false, error: @user.errors.full_messages[0] }, status: :uprocessable_entity
  end
end

#indexObject



7
8
9
10
# File 'app/controllers/mks/auth/users_controller.rb', line 7

def index
  @users = ApplicationModule.find_by(code: app_code).users
  render json: @users
end

#loginObject



52
53
54
55
56
57
58
59
60
61
62
# File 'app/controllers/mks/auth/users_controller.rb', line 52

def 
  user = User.find_by(email: auth_params[:email])
  if user.authenticate(auth_params[:password]) &&
     user.has_module(auth_params[:app_module])

    jwt = TokenAuth.issue(user.to_token_payload)
    render json: { jwt: jwt }
  else
    render json: {}, status: 400
  end
end

#rolesObject



12
13
14
15
# File 'app/controllers/mks/auth/users_controller.rb', line 12

def roles
  user = User.find(params[:id])
  render json: user.roles
end

#save_selected_rolesObject



25
26
27
28
29
30
31
# File 'app/controllers/mks/auth/users_controller.rb', line 25

def save_selected_roles
  @user.roles.delete_all
  selected = save_selected_roles_params['roles'].select { |r| r['selected'] }.map{ |r| r['id'] }
  roles = UserRole.where(id: selected)
  @user.roles << roles
  render json: { success: true }
end

#updateObject



44
45
46
47
48
49
50
# File 'app/controllers/mks/auth/users_controller.rb', line 44

def update
  if @user.update(user_params)
    render json: { success: true, data: @user }
  else
    render json: { success: false, error: @user.errors.full_messages[0] }, status: :unprocessable_entity
  end
end

#user_rolesObject

A method to fetch all roles, with roles of a user marked as selected



19
20
21
22
23
# File 'app/controllers/mks/auth/users_controller.rb', line 19

def user_roles
  all_roles = UserRole.joins(:application_module).where(mks_auth_application_modules: { code: app_code })
  roles = all_roles.map { |r| { id: r.id, name: r.name, selected: @user.roles.include?(r) } }
  render json: roles
end