Description:
fix user profile, add test
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r759:6c24fe0db627 - - 7 files changed: 76 inserted, 55 deleted

@@ -11,13 +11,12
11 11 :retrieve_password]
12 12
13 13 before_action :verify_online_registration, :only => [:new,
14 14 :register,
15 15 :forget,
16 16 :retrieve_password]
17 - before_action :check_valid_login, :profile_authorization, only: [:profile]
18 17
19 18 before_action :admin_authorization, only: [:stat, :toggle_activate, :toggle_enable]
20 19
21 20
22 21 #in_place_edit_for :user, :alias_for_editing
23 22 #in_place_edit_for :user, :email_for_editing
@@ -27,22 +26,31
27 26 redirect_to :controller => 'main', :action => 'list'
28 27 else
29 28 @user = User.find(session[:user_id])
30 29 end
31 30 end
32 31
32 + # edit logged in user profile
33 + def profile
34 + if !GraderConfiguration['system.user_setting_enabled']
35 + redirect_to :controller => 'main', :action => 'list'
36 + else
37 + @user = current_user;
38 + end
39 + end
40 +
33 41 def chg_passwd
34 42 user = User.find(session[:user_id])
35 - user.password = params[:passwd]
36 - user.password_confirmation = params[:passwd_verify]
43 + user.password = params[:password]
44 + user.password_confirmation = params[:password_confirmation]
37 45 if user.save
38 46 flash[:notice] = 'password changed'
39 47 else
40 48 flash[:notice] = 'Error: password changing failed'
41 49 end
42 - redirect_to :action => 'index'
50 + redirect_to :action => 'profile'
43 51 end
44 52
45 53 def new
46 54 @user = User.new
47 55 render :action => 'new', :layout => 'empty'
48 56 end
@@ -212,8 +220,7
212 220 end
213 221
214 222 private
215 223 def user_params
216 224 params.require(:user).permit(:login, :full_name, :email)
217 225 end
218 -
219 226 end
@@ -71,13 +71,13
71 71 class: 'navbar-btn btn btn-default btn-warning', data: {toggle: 'tooltip'},title: 'Number of ungraded submission'
72 72
73 73 %ul.nav.navbar-nav.navbar-right
74 74 = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-question-sign')}".html_safe, 'main', 'help')
75 75 = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-comment')}".html_safe, 'messages', 'index', {title: I18n.t('menu.messages'), data: {toggle: 'tooltip'}})
76 76 - if GraderConfiguration['system.user_setting_enabled']
77 - = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-cog')}".html_safe, 'users', 'index', {title: I18n.t('menu.settings'), data: {toggle: 'tooltip'}})
77 + = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-cog', id: 'user_profile')}".html_safe, 'users', 'profile', {title: I18n.t('menu.settings'), data: {toggle: 'tooltip'}})
78 78 = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-log-out')} #{@current_user.full_name}".html_safe, 'main', 'login', {title: I18n.t('menu.log_out'), data: {toggle: 'tooltip'}})
79 79
80 80 /
81 81 - if (@current_user!=nil) and (session[:admin])
82 82 %nav.navbar.navbar-fixed-top.navbar-inverse.secondnavbar
83 83 .container-fluid
@@ -1,14 +1,12
1 1 = simple_form_for(@user) do |f|
2 2 = f.error_notification
3 - .row
4 - .col-md-6.col-md-offset-2
5 - = f.input :login, label: 'Login'
6 - = f.input :full_name, label: 'Full name'
7 - = f.input :password
8 - = f.input :password_confirmation
9 - = f.input :email
10 - = f.input :alias
11 - = f.input :remark
12 - = f.button :submit, class: 'btn btn-success'
13 - = link_to 'Cancel', :back, class: 'btn btn-default'
3 + = f.input :login, label: 'Login'
4 + = f.input :full_name, label: 'Full name'
5 + = f.input :password
6 + = f.input :password_confirmation
7 + = f.input :email
8 + = f.input :alias
9 + = f.input :remark
10 + = f.button :submit, class: 'btn btn-primary'
11 + = link_to 'Cancel', :back, class: 'btn btn-default'
14 12
@@ -1,4 +1,9
1 - %h1 Editing user
2 - = simple_form_for @user, url: user_admin_path(@user) do |f|
3 - = render partial: 'form', local: f
1 + .container-fluid
2 + .row
3 + .col-md-6
4 + %h1 Editing user
5 + .row
6 + .col-md-6
7 + = simple_form_for @user, url: user_admin_path(@user) do |f|
8 + = render partial: 'form', local: f
4 9
@@ -1,36 +1,24
1 - = user_title_bar(@user)
2 -
3 - %h1 Your account settings
4 -
5 - -#%p
6 - -#You can edit your alias and e-mails. Just click on the text and edit it.
7 1
8 - %table.table.table-bordered{:style => "width:30%"}
9 - %tr
10 - %th Login
11 - %td= @user.login
12 - %tr
13 - %th Full name
14 - %td= @user.full_name
15 - -#%tr
16 - -#%th.uinfo Alias
17 - -#%td.uinfo= in_place_editor_field :user, 'alias_for_editing', {}, :rows => 1
18 - -#%tr
19 - -#%th.uinfo E-mail
20 - -#%td.uinfo= in_place_editor_field :user, 'email_for_editing', {}, :rows => 1
21 - %tr
22 - %th Password
23 - %td
24 - = form_tag :action => 'chg_passwd', :method => 'post' do
25 - %table
26 - %tr
27 - %td
28 - %input{:type => "password", :class => "form-control", :name => "passwd", :id => "passwd"}
29 - %td (new)
30 - %tr
31 - %td
32 - %input{:type => "password", :class => "form-control", :name => "passwd_verify", :id => "passwd_verify"}
33 - %td (verify)
34 - %tr
35 - %td{:colspan => "2"}
36 - %input{:type => "button", :class => "btn btn-default", :name => "commit", :value => "Change Password"}
2 + .container-fluid
3 + = form_tag :action => 'chg_passwd', :method => 'post' do
4 + .row
5 + .col-md-6
6 + %h1 Your account settings
7 + .form-group
8 + %label{:for => "login"} Login
9 + =@user.login
10 + .form-group
11 + %label{:for => "full_name"} Full name
12 + =@user.full_name
13 + .form-group
14 + %label{:for => "password"} Password
15 + =password_field_tag :password, nil, class: 'form-control'
16 + .form-group
17 + %label{:for => "password_confirmation"} Password confirmation
18 + =password_field_tag :password_confirmation, nil, class: 'form-control'
19 + .row
20 + .col-md-6
21 + =submit_tag 'Edit', class: 'btn btn-primary'
22 +
23 +
24 +
@@ -69,12 +69,16
69 69
70 70 resources :users do
71 71 member do
72 72 get 'toggle_activate', 'toggle_enable'
73 73 get 'stat'
74 74 end
75 + collection do
76 + get 'profile'
77 + post 'chg_passwd'
78 + end
75 79 end
76 80
77 81 resources :submissions do
78 82 member do
79 83 get 'download'
80 84 get 'compiler_msg'
@@ -90,12 +90,31
90 90 login 'james','morning'
91 91 visit new_list_user_admin_index_path
92 92 assert_text 'You are not authorized'
93 93 assert_current_path login_main_path
94 94 end
95 95
96 + test "login then change password" do
97 + newpassword = '1234asdf'
98 + login 'john', 'hello'
99 + visit profile_users_path
100 +
101 + fill_in 'password', with: newpassword
102 + fill_in 'password_confirmation', with: newpassword
103 +
104 + click_on 'Edit'
105 +
106 + visit logout_main_path
107 + login 'john', 'hello'
108 + assert_text 'Wrong password'
109 +
110 + login 'john', newpassword
111 + assert_text "MAIN"
112 + assert_text "Submission"
113 + end
114 +
96 115 def login(username,password)
97 116 visit root_path
98 117 fill_in "Login", with: username
99 118 fill_in "Password", with: password
100 119 click_on "Login"
101 120 end
You need to be logged in to leave comments. Login now