Refactored profile area
This commit is contained in:
parent
8f9a450eed
commit
dc37c8aaae
|
@ -699,7 +699,14 @@ li.note {
|
|||
.active {
|
||||
img {
|
||||
border:1px solid #ccc;
|
||||
background:$hover;
|
||||
@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";
|
||||
|
||||
/**
|
||||
* This file represent profile styles
|
||||
*/
|
||||
@import "sections/profile.scss";
|
||||
|
||||
/**
|
||||
* 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
|
||||
current_user.reset_authentication_token!
|
||||
redirect_to profile_token_path
|
||||
redirect_to profile_account_path
|
||||
end
|
||||
|
||||
private
|
||||
def history
|
||||
@events = current_user.recent_events.page(params[:page]).per(20)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def user
|
||||
@user = current_user
|
||||
|
|
|
@ -104,7 +104,8 @@ module ApplicationHelper
|
|||
|
||||
# Profile Area
|
||||
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 :design; current_page?(controller: "profile", action: :design)
|
||||
when :ssh_keys; controller.controller_name == "keys"
|
||||
|
|
|
@ -9,20 +9,20 @@
|
|||
%li.home{class: tab_class(:profile)}
|
||||
= link_to "Profile", profile_path
|
||||
|
||||
%li{class: tab_class(:password)}
|
||||
= link_to "Authentication", profile_password_path
|
||||
%li{class: tab_class(:account)}
|
||||
= link_to "Account", profile_account_path
|
||||
|
||||
%li{class: tab_class(:ssh_keys)}
|
||||
= link_to keys_path do
|
||||
SSH Keys
|
||||
%span.count= current_user.keys.count
|
||||
|
||||
%li{class: tab_class(:token)}
|
||||
= link_to "Token", profile_token_path
|
||||
|
||||
%li{class: tab_class(:design)}
|
||||
= link_to "Design", profile_design_path
|
||||
|
||||
%li{class: tab_class(:history)}
|
||||
= link_to "History", profile_history_path
|
||||
|
||||
|
||||
.content
|
||||
= 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
|
||||
-unless Gitlab.config.disable_gravatar?
|
||||
%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?
|
||||
%li
|
||||
%p.hint
|
||||
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
|
||||
.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
|
||||
#
|
||||
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"
|
||||
get "profile/token", :to => "profile#token"
|
||||
put "profile/reset_private_token", :to => "profile#reset_private_token"
|
||||
|
|
|
@ -12,7 +12,7 @@ Feature: Profile
|
|||
And I should see new contact info
|
||||
|
||||
Scenario: I change my password
|
||||
Given I visit profile password page
|
||||
Given I visit profile account page
|
||||
Then I change my password
|
||||
And I should be redirected to sign in page
|
||||
|
||||
|
|
|
@ -21,8 +21,8 @@ module SharedPaths
|
|||
visit profile_path
|
||||
end
|
||||
|
||||
Given 'I visit profile password page' do
|
||||
visit profile_password_path
|
||||
Given 'I visit profile account page' do
|
||||
visit profile_account_path
|
||||
end
|
||||
|
||||
Given 'I visit profile token page' do
|
||||
|
|
|
@ -28,8 +28,8 @@ describe "Users Security" do
|
|||
it { should be_denied_for :visitor }
|
||||
end
|
||||
|
||||
describe "GET /profile/password" do
|
||||
subject { profile_password_path }
|
||||
describe "GET /profile/account" do
|
||||
subject { profile_account_path }
|
||||
|
||||
it { should be_allowed_for @u1 }
|
||||
it { should be_allowed_for :admin }
|
||||
|
|
Loading…
Reference in a new issue