Class: UsersController

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

Instance Method Summary collapse

Methods included from Zena::App

included

Instance Method Details

#createObject

TODO: test



59
60
61
62
63
64
65
66
67
# File 'app/controllers/users_controller.rb', line 59

def create
  if params[:groups]
    params[:user][:group_ids] = params[:groups].values
  end

  get_groups_list

  @user = secure(User) { User.create(params[:user]) }
end

#dev_skin(skin_id = ) ⇒ Object

nil ==> no dev mode -1 ==> rescue skin 0 ==> normal skin xx ==> fixed skin



38
39
40
41
42
43
44
45
46
# File 'app/controllers/users_controller.rb', line 38

def dev_skin(skin_id = params['skin_id'])
  visitor.update_attributes('dev_skin_id' => skin_id)

  if request.referer && !(request.referer =~ /login/)
    redirect_to request.referer
  else
    redirect_to home_path(:prefix => prefix)
  end
end

#editObject

TODO: test



70
71
72
73
74
75
76
77
# File 'app/controllers/users_controller.rb', line 70

def edit
  @user.password = nil
  get_groups_list
  respond_to do |format|
    format.html { render :partial => 'users/form' }
    format.js   { render :partial => 'users/form', :layout => false }
  end
end

#indexObject

Show the list of users. Rendered in the admin layout.



16
17
18
19
20
21
22
23
24
25
26
# File 'app/controllers/users_controller.rb', line 16

def index
  secure!(User) do
    @users = User.paginate(:all, :order => 'status DESC, login ASC', :page => params[:page], :per_page => 20)
  end

  get_groups_list
  @user   = User.new
  respond_to do |format|
    format.html
  end
end

#preferencesObject



28
29
30
31
32
# File 'app/controllers/users_controller.rb', line 28

def preferences
  respond_to do |format|
    format.html # preferences.html.erb
  end
end

#rescueObject

Use $default skin for rendering



49
50
51
52
53
54
55
56
# File 'app/controllers/users_controller.rb', line 49

def rescue
  if visitor.is_admin?
    dev_skin(-1)
  else
    
    redirect_to 
  end
end

#showObject



8
9
10
11
12
13
# File 'app/controllers/users_controller.rb', line 8

def show
  respond_to do |format|
    format.html { render :file => admin_layout, :layout => false }
    format.js
  end
end

#updateObject



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'app/controllers/users_controller.rb', line 79

def update
  if skin_id = params['user']['dev_skin_id']
    return dev_skin(skin_id)
  end

  @update = params.delete(:update)

  opts = params[:user]
  unless opts[:password].blank?
    if opts[:password].strip.size < 6
      @user.errors.add('password', 'too short')
    end

    if !visitor.is_admin? || opts[:retype_password]
      if opts[:password] != opts[:retype_password]
        @user.errors.add('retype_password', 'does not match new password')
      end
    end

    if !visitor.is_admin? || @user.id == visitor.id
      if !@user.valid_password?(opts[:old_password])
        @user.errors.add('old_password', "not correct")
      end
    end

    if @user.errors.empty?
      @user.password = opts[:password]
      opts.delete(:password)
      opts.delete(:retype_password)
      opts.delete(:old_password)
    end
  end

  if @user.errors.empty?
    @user.update_attributes(params[:user])
    if @user.errors.empty?
      flash.now[:notice] = _('information successfully updated')
    else
      flash.now[:error ] = _('could not update user')
    end
  end

  respond_to do |format|
    format.html # TODO
    format.js
  end
end