manage bookmarks, bugfixes
[smr.git] / gui / app / controllers / objects / user_controller.rb
blobdbcfbef0c4bfce3569223c91b6ad4baf4dd8ab9e
2 # This file is part of SMR.
4 # SMR is free software: you can redistribute it and/or modify it under the
5 # terms of the GNU General Public License as published by the Free Software
6 # Foundation, either version 3 of the License, or (at your option) any later
7 # version.
9 # SMR is distributed in the hope that it will be useful, but WITHOUT ANY
10 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
11 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License along with
14 # SMR.  If not, see <http://www.gnu.org/licenses/>.
18 # handles CRUD on User records
19 class Objects::UserController < ObjectsController
20     def index
21         super
22         @users, @total_pages = smr_paginate(
23             @page = smr_page,
24             User.order(:login).to_a
25         )
26     end
28     ##
29     # defines new User to #create
30     def new
31         @user = User.new
32     end
34     ##
35     # edit User
36     # - until proper permissions are implemented a User can only edit itself,
37     #   but not others
38     # - each User can, however, create new users.
39     def edit
40         @user = current_user
41         render :new
42     end
44     ##
45     # handles creates and updates
46     # - until proper permissions are implemented a User can only edit itself,
47     #   but not others
48     def create
49         if params[:user][:id].to_i > 0 then
50             u = User.where(:id=>current_user.id).first
51             u.update(user_params)
53             if not params[:user][:password].empty? then
54                 if params[:user][:password].eql?(params[:user][:password_confirm]) then
55                     u.password = params[:user][:password].to_s
56                     u.save
57                     flash[:notice] = 'Password changed.'
58                 else
59                     redirect_to :back, :alert=>'Confirming password failed. Typo?'
60                     return
61                 end
62             end
63         else
64             u = User.new(user_params)
65             flash[:notice] = 'new users initial password is: "%s"' % u.generate_password
66             u.save
67         end
69         flash[:alert] = u.errors.full_messages.uniq.join(', ') unless u.errors.empty?
70         redirect_to objects_user_index_path
71     end
73  protected
75     ##
76     # internal helper defining parameters acceptable for User create/update
77     def user_params
78         params.require(:user).permit(
79             :id, :login, :is_admin, :fullname, :email, :comment,
80             :Bookmark_attributes=> [ :id, :name, :url, :rank ]
81         )
82     end
84 end