Refactored profile area
This commit is contained in:
parent
8f9a450eed
commit
dc37c8aaae
15 changed files with 104 additions and 68 deletions
|
@ -699,7 +699,14 @@ li.note {
|
||||||
.active {
|
.active {
|
||||||
img {
|
img {
|
||||||
border:1px solid #ccc;
|
border:1px solid #ccc;
|
||||||
|
background:$hover;
|
||||||
@include border-radius(5px);
|
@include border-radius(5px);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btn-build-token {
|
||||||
|
float: left;
|
||||||
|
padding: 6px 20px;
|
||||||
|
margin-right: 12px;
|
||||||
|
}
|
||||||
|
|
|
@ -160,6 +160,11 @@ $hover: #fdf5d9;
|
||||||
*/
|
*/
|
||||||
@import "sections/notes.scss";
|
@import "sections/notes.scss";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This file represent profile styles
|
||||||
|
*/
|
||||||
|
@import "sections/profile.scss";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devise styles
|
* Devise styles
|
||||||
*/
|
*/
|
||||||
|
|
8
app/assets/stylesheets/sections/profile.scss
Normal file
8
app/assets/stylesheets/sections/profile.scss
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
.profile_history {
|
||||||
|
.event_feed {
|
||||||
|
min-height:20px;
|
||||||
|
.avatar {
|
||||||
|
width:20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -32,10 +32,14 @@ class ProfileController < ApplicationController
|
||||||
|
|
||||||
def reset_private_token
|
def reset_private_token
|
||||||
current_user.reset_authentication_token!
|
current_user.reset_authentication_token!
|
||||||
redirect_to profile_token_path
|
redirect_to profile_account_path
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
def history
|
||||||
|
@events = current_user.recent_events.page(params[:page]).per(20)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
def user
|
def user
|
||||||
@user = current_user
|
@user = current_user
|
||||||
|
|
|
@ -104,7 +104,8 @@ module ApplicationHelper
|
||||||
|
|
||||||
# Profile Area
|
# Profile Area
|
||||||
when :profile; current_page?(controller: "profile", action: :show)
|
when :profile; current_page?(controller: "profile", action: :show)
|
||||||
when :password; current_page?(controller: "profile", action: :password)
|
when :history; current_page?(controller: "profile", action: :history)
|
||||||
|
when :account; current_page?(controller: "profile", action: :account)
|
||||||
when :token; current_page?(controller: "profile", action: :token)
|
when :token; current_page?(controller: "profile", action: :token)
|
||||||
when :design; current_page?(controller: "profile", action: :design)
|
when :design; current_page?(controller: "profile", action: :design)
|
||||||
when :ssh_keys; controller.controller_name == "keys"
|
when :ssh_keys; controller.controller_name == "keys"
|
||||||
|
|
|
@ -9,20 +9,20 @@
|
||||||
%li.home{class: tab_class(:profile)}
|
%li.home{class: tab_class(:profile)}
|
||||||
= link_to "Profile", profile_path
|
= link_to "Profile", profile_path
|
||||||
|
|
||||||
%li{class: tab_class(:password)}
|
%li{class: tab_class(:account)}
|
||||||
= link_to "Authentication", profile_password_path
|
= link_to "Account", profile_account_path
|
||||||
|
|
||||||
%li{class: tab_class(:ssh_keys)}
|
%li{class: tab_class(:ssh_keys)}
|
||||||
= link_to keys_path do
|
= link_to keys_path do
|
||||||
SSH Keys
|
SSH Keys
|
||||||
%span.count= current_user.keys.count
|
%span.count= current_user.keys.count
|
||||||
|
|
||||||
%li{class: tab_class(:token)}
|
|
||||||
= link_to "Token", profile_token_path
|
|
||||||
|
|
||||||
%li{class: tab_class(:design)}
|
%li{class: tab_class(:design)}
|
||||||
= link_to "Design", profile_design_path
|
= link_to "Design", profile_design_path
|
||||||
|
|
||||||
|
%li{class: tab_class(:history)}
|
||||||
|
= link_to "History", profile_history_path
|
||||||
|
|
||||||
|
|
||||||
.content
|
.content
|
||||||
= yield
|
= yield
|
||||||
|
|
57
app/views/profile/account.html.haml
Normal file
57
app/views/profile/account.html.haml
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
- if Gitlab.config.omniauth_enabled?
|
||||||
|
%fieldset
|
||||||
|
%legend
|
||||||
|
%h3.page_title Social Accounts
|
||||||
|
.oauth_select_holder
|
||||||
|
%p.hint Tip: Click on icon to activate sigin with one of the following services
|
||||||
|
- User.omniauth_providers.each do |provider|
|
||||||
|
%span{class: oauth_active_class(provider) }
|
||||||
|
= link_to authbutton(provider, 32), omniauth_authorize_path(User, provider)
|
||||||
|
|
||||||
|
|
||||||
|
%fieldset
|
||||||
|
%legend
|
||||||
|
%h3.page_title
|
||||||
|
Private token
|
||||||
|
%span.cred.right
|
||||||
|
keep it in secret!
|
||||||
|
.padded
|
||||||
|
= form_for @user, url: profile_reset_private_token_path, method: :put do |f|
|
||||||
|
.data
|
||||||
|
%p.slead
|
||||||
|
Private token used to access application resources without authentication.
|
||||||
|
%br
|
||||||
|
It can be used for atom feed or API
|
||||||
|
%p.cgray
|
||||||
|
- if current_user.private_token
|
||||||
|
= text_field_tag "token", current_user.private_token, class: "xxlarge large_text"
|
||||||
|
= f.submit 'Reset', confirm: "Are you sure?", class: "btn primary btn-build-token"
|
||||||
|
- else
|
||||||
|
%span You don`t have one yet. Click generate to fix it.
|
||||||
|
= f.submit 'Generate', class: "btn success btn-build-token"
|
||||||
|
|
||||||
|
%fieldset
|
||||||
|
%legend
|
||||||
|
%h3.page_title Password
|
||||||
|
= form_for @user, url: profile_password_path, method: :put do |f|
|
||||||
|
.padded
|
||||||
|
%p.slead After successful password update you will be redirected to login page where you should login with new password
|
||||||
|
-if @user.errors.any?
|
||||||
|
.alert-message.block-message.error
|
||||||
|
%ul
|
||||||
|
- @user.errors.full_messages.each do |msg|
|
||||||
|
%li= msg
|
||||||
|
|
||||||
|
.clearfix
|
||||||
|
= f.label :password
|
||||||
|
.input= f.password_field :password
|
||||||
|
.clearfix
|
||||||
|
= f.label :password_confirmation
|
||||||
|
.input= f.password_field :password_confirmation
|
||||||
|
.actions
|
||||||
|
= f.submit 'Save', class: "btn save-btn"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
5
app/views/profile/history.html.haml
Normal file
5
app/views/profile/history.html.haml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
.profile_history
|
||||||
|
= render @events
|
||||||
|
%hr
|
||||||
|
= paginate @events, theme: "gitlab"
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
- if Gitlab.config.omniauth_enabled?
|
|
||||||
%h3.page_title Accounts
|
|
||||||
%hr
|
|
||||||
%p.hint Tip: Click on icon to activate sigin with one of the following services
|
|
||||||
.oauth_select_holder
|
|
||||||
- User.omniauth_providers.each do |provider|
|
|
||||||
%span{class: oauth_active_class(provider) }
|
|
||||||
= link_to authbutton(provider, 32), omniauth_authorize_path(User, provider)
|
|
||||||
|
|
||||||
.clearfix.prepend-top-20
|
|
||||||
%h3.page_title Password
|
|
||||||
%hr
|
|
||||||
|
|
||||||
= form_for @user, url: profile_password_path, method: :put do |f|
|
|
||||||
%p.slead After successful password update you will be redirected to login page where you should login with new password
|
|
||||||
-if @user.errors.any?
|
|
||||||
.alert-message.block-message.error
|
|
||||||
%ul
|
|
||||||
- @user.errors.full_messages.each do |msg|
|
|
||||||
%li= msg
|
|
||||||
|
|
||||||
.clearfix
|
|
||||||
= f.label :password
|
|
||||||
.input= f.password_field :password
|
|
||||||
.clearfix
|
|
||||||
= f.label :password_confirmation
|
|
||||||
.input= f.password_field :password_confirmation
|
|
||||||
.actions
|
|
||||||
= f.submit 'Save', class: "btn save-btn"
|
|
|
@ -33,13 +33,13 @@
|
||||||
%ul
|
%ul
|
||||||
-unless Gitlab.config.disable_gravatar?
|
-unless Gitlab.config.disable_gravatar?
|
||||||
%li
|
%li
|
||||||
%p.hint You can change your avatar at gravatar.com
|
%p.hint You can change your avatar at #{link_to "gravatar.com", "http://gravatar.com"}
|
||||||
|
|
||||||
- if Gitlab.config.omniauth_enabled? && @user.provider?
|
- if Gitlab.config.omniauth_enabled? && @user.provider?
|
||||||
%li
|
%li
|
||||||
%p.hint
|
%p.hint
|
||||||
You can login through #{@user.provider.titleize}!
|
You can login through #{@user.provider.titleize}!
|
||||||
= link_to "click here to change", profile_password_path
|
= link_to "click here to change", profile_account_path
|
||||||
|
|
||||||
%hr
|
%hr
|
||||||
.row
|
.row
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
%h3.page_title
|
|
||||||
Private token
|
|
||||||
%span.cred.right
|
|
||||||
keep it in secret!
|
|
||||||
%hr
|
|
||||||
= form_for @user, url: profile_reset_private_token_path, method: :put do |f|
|
|
||||||
.data
|
|
||||||
%p.slead
|
|
||||||
Private token used to access application resources without authentication.
|
|
||||||
%br
|
|
||||||
It can be used for atom feed or API
|
|
||||||
%p.cgray
|
|
||||||
- if current_user.private_token
|
|
||||||
= text_field_tag "token", current_user.private_token, class: "xxlarge large_text"
|
|
||||||
- else
|
|
||||||
You don`t have one yet. Click generate to fix it.
|
|
||||||
.actions
|
|
||||||
- if current_user.private_token
|
|
||||||
= f.submit 'Reset', confirm: "Are you sure?", class: "btn"
|
|
||||||
- else
|
|
||||||
= f.submit 'Generate', class: "btn primary"
|
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,8 @@ Gitlab::Application.routes.draw do
|
||||||
#
|
#
|
||||||
# Profile Area
|
# Profile Area
|
||||||
#
|
#
|
||||||
get "profile/password", :to => "profile#password"
|
get "profile/account", :to => "profile#account"
|
||||||
|
get "profile/history", :to => "profile#history"
|
||||||
put "profile/password", :to => "profile#password_update"
|
put "profile/password", :to => "profile#password_update"
|
||||||
get "profile/token", :to => "profile#token"
|
get "profile/token", :to => "profile#token"
|
||||||
put "profile/reset_private_token", :to => "profile#reset_private_token"
|
put "profile/reset_private_token", :to => "profile#reset_private_token"
|
||||||
|
|
|
@ -12,7 +12,7 @@ Feature: Profile
|
||||||
And I should see new contact info
|
And I should see new contact info
|
||||||
|
|
||||||
Scenario: I change my password
|
Scenario: I change my password
|
||||||
Given I visit profile password page
|
Given I visit profile account page
|
||||||
Then I change my password
|
Then I change my password
|
||||||
And I should be redirected to sign in page
|
And I should be redirected to sign in page
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,8 @@ module SharedPaths
|
||||||
visit profile_path
|
visit profile_path
|
||||||
end
|
end
|
||||||
|
|
||||||
Given 'I visit profile password page' do
|
Given 'I visit profile account page' do
|
||||||
visit profile_password_path
|
visit profile_account_path
|
||||||
end
|
end
|
||||||
|
|
||||||
Given 'I visit profile token page' do
|
Given 'I visit profile token page' do
|
||||||
|
|
|
@ -28,8 +28,8 @@ describe "Users Security" do
|
||||||
it { should be_denied_for :visitor }
|
it { should be_denied_for :visitor }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "GET /profile/password" do
|
describe "GET /profile/account" do
|
||||||
subject { profile_password_path }
|
subject { profile_account_path }
|
||||||
|
|
||||||
it { should be_allowed_for @u1 }
|
it { should be_allowed_for @u1 }
|
||||||
it { should be_allowed_for :admin }
|
it { should be_allowed_for :admin }
|
||||||
|
|
Loading…
Reference in a new issue