any_login 1.3.1 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/app/controllers/any_login/application_controller.rb +17 -0
- data/app/helpers/any_login/application_helper.rb +26 -3
- data/app/views/any_login/_any_login.html.erb +7 -0
- data/lib/any_login.rb +8 -0
- data/lib/any_login/providers/authlogic.rb +1 -1
- data/lib/any_login/providers/clearance.rb +1 -1
- data/lib/any_login/providers/devise.rb +1 -1
- data/lib/any_login/providers/sorcery.rb +1 -1
- data/lib/any_login/version.rb +1 -1
- data/test/dummy-clearance/db/development.sqlite3 +0 -0
- data/test/dummy/app/views/home/index.html.erb +1 -448
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/log/development.log +2017 -0
- data/test/dummy/log/test.log +50 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/-D/-Dg5ZkTls3rHNa2l35Y2GMEXbJnvHY0-Egoq3V3KvGY.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/-S/-SuAD2dP0cSgjTq3tP0swCy0jyqmR6tInZKuAFBcVp8.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/04/04oTddx5RijUeZloooZ1Pm3k8cfkpg-3477aFaNANq4.cache +5 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/0Q/0QThAlIyHET8vLk7e4zmbnV9ZMHI5g4KcJu3By5L0xg.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/0s/0s938iaOX2NBJ-elmk5V7j6XyYC7WxwS57x4aSiyH54.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/1l/1l2LyYtD0hI8QJI83gSEdwWsnqaFREIwwRAqXquREMY.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/2c/2cjCUV2SoZNb4a7U-CVWPBsrSAT_805cWMBQqcDuR8U.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/3N/3Ns3xAyH95BGx95LC8MPlnLNfnm1HQC-LRJ4n8Zlbhs.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/3p/3pTb9cnqbyj8oSbBnv-vO5Snw8FMgSpsEqhfftd6KM8.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/5P/5Pf0YftQI-ZQIqD1eArSl11t-n_RMCnpNAm7PJbPMg8.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/6L/6L8OhKpEg9OopqEks1Eg3Yn2nNpXkMUcYB3Ct90tmOI.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/6R/6R8Ab2VVfHjOSQ8bJdbYqEEpI_BwsOTGMIWrs7CPiA8.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/6w/6wSsp-himpVCHqd2MwCqg5qpg9qvaBZK_QetzKx6fhg.cache +4 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/7U/7Urlldd4JqrpBAeGSO40LnBaBJUapZRia0-eA3BGgnQ.cache +4 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/9X/9Xc8YFlDJRwahzhOQ9-q0-FtnQcMniRnX8jJlHTROm8.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/AU/AUUQfp0ZTTAPUPDe8TEwY9U4B7rPF5tbb3DTaahfXGg.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Bx/BxIh9R3OGw4rXVuqRbI8E4_FFNuY0pqWtEVgO_M47hE.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Cu/CuKQFQrECTYFUbTL112t_9VxYRa-qPAtFh_puj554eI.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Cu/CuNnn165lBWZkKCjdY_joHCV8qyyN-UNj2O0ZHBSddU.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/FB/FBHo9LuH0xkwMXXXx95xeALLysZQEJGD_jAXz0L5D9c.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Fg/Fgi2PW3c1qK1CS8Mp5xq_m4Frc-Y4fz6MgbB--5_DFg.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Fo/FoMKiqVuXZlqXKS5sZ2CepOYjMVxk3XUCUC8z96dGlk.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Fw/FwiXjnLLgGTbJ2tZcnFWOp30FIQFbt42kxicUMneUFU.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/GA/GAdJwtpszZDaIVjZ1vy_hhrduwyRVZ-UVvY1VWHC1F8.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/I3/I3nUL1109ON75W3zxAKo1beybc7C4ZS1LGTLiZg2ej8.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/IH/IHEtgWG-bM5JdeS4MpjATwdDPniVNIk31MgI5xCGuAw.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/J-/J-4oPSPBOYXvlx3v1bU5yFRhWKIt9Pbd-jTh4ARZTAo.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/L5/L55mKPIZW4yu8-ei7nxwOfhFbR2XEGnrlMdydgpfai8.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Mu/MuFc7AzSpPX16nZtGyUj6Jm09C_4L5gsM0FzPOBIwY4.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Na/NaOPJqxpTLnXnQ4IX8jEw3cvYo2SrqrlUYeZW2UzoOk.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/On/OnResjr8j7pB3v8AMPlqruJ_597sdzzOxgAmjDuwa3w.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/P8/P8ytY6J2lveAeG2fMvyy8r9-tPg7fiN_3Ab7V7bQqTA.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/PV/PVK-jZacxU1cWegzoBx4MuUxIFJx_s7WSdxTCeSJ2b4.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/QI/QI0_r-lhQ11MgB5hl0iDmZkYUP2lhIbinlNV6z-CADI.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/QK/QKxzR5Cw94Oy0fL3B1xQmewTiZ6syQcpkWvN_q51-hs.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Qr/QrrG5X3SHARlU3cX7xW8wIwoKn4WwLZmZnr43pECtq8.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/RI/RICxiF1Y7tRr1144F7mHmJPW-mEKzj8mvHddAM2tiiM.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/RI/RIZ9Fwy55ZmMRMNm2m3o4FB0CmGeRKIDhRbjHCaG_2U.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/TK/TKL8jyLcA2JcZ3puvU_LSHcONp-_5Z-77GJRSThtC7A.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Uf/UfrjkaQSDo_CFzC0sczZIJW0X-owh9Tnm1xLkODaJ1I.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/W8/W8nAt_ntq-eifnenvYEnaPn1yPvEs66qr95bxpARWMQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/WR/WRkATZ__BM8FSA_ps96QuKbjF1qxdXUQ2R0DbA1NiyA.cache +4 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/WS/WShZwpbrt5Q9NU5ngKHDGLed1e8DSQC7UbTdCbsgsT8.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/X9/X9CCaGqqaUv4WO8YGDLvsoMRI-YE_hZ7zMPXI8r12ts.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/XX/XXAHmbeg_TfKNFVv5Bke0lxLHJg2JKBL6_niQsSaNWU.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/YW/YWz7RsbYEyV5W5K-N2XAZG4-LH1XcsjBxFfO-tCGlDE.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Yl/YlW61yeKVQbCaGB5KQ9x5UBQKkcFCI080Uagi4qUfMM.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/ZP/ZPAB02xJo6ZN3L6OfzyWEgh36ZS4MGSuk_e7CAwfanM.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/eU/eUX6c56Kt_pz8fPl14NxlFJfGidrugVhIMj1gjs97pQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/eq/eq-hOvJwIQGfeaOxPvLLoSgspYnPt1qmAvfzhIjiQ8I.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/f5/f54V076hGyLBoyXVqTSQ4TYLpxxfpE4rfnZKmPlkYD0.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/fp/fpeHoSYPNIxuVWmz3_zN7Vbi23P-F3HPYv-XpKpLZFg.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/g0/g0C0AU1L_x5sxYFr6z0NE79m0pF6-CXBH6VFPVxgCpM.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/gT/gTC13k-_pje-P_LWe83hQ9_3C5cinGmG8ckrar4b7vE.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/gT/gTkUgaB4k61_B3ydTNzFB012pqNr-7E4KO2cVtNLDkU.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/h8/h8MyXG62sm-uRDQiYg6CH_Z-EtBPEai0euDPYa2ZOLQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/jJ/jJMUuOxfxNdR_iw6_Atzc9BQIkzNyweek8qCfDM1620.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/kh/khZgphuPeZYzQwBZrBEVGDBq4QQAvZ_CUfNsM15KtXc.cache +4 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/kw/kwrJPJzQnUZy6XwmBrFMJjah6mZ9qNB8nStiWPrGWhs.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/l5/l5rpSHE1xK2jT7OGZDVOzAUK0LgmIMJAhVJQGaGWQ00.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/my/myQlTWBqjEV7aXVwBtOaHIt42To2MmC_zlFFqkPxjmw.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/ni/niVUoVEMUptq6L7GFj6Df_vajoeWEYtSF4BHTsuLmfE.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/o9/o9K2isMkub-cGtNTwR7zJ2UkWW-Q3C2vrMc7vyG6cQk.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/pI/pIVqc5tXAaLDSQbx4dvcFawX1iRPdcw_JTjDIE6Y0eM.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/pn/pnW3u_1AN48ig6ngefI89y96xoSlvnJurx-e3J-leoE.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/qD/qDNkKDUNVSrSAWT8yqnkWcqqtxLn4VA_kyk8JX1pKOU.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/s-/s-mG18OjpD8IKlOk-YOYmUYFC16rIaqqtnmGQYSEPIY.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/sY/sYqD_6_DLhWbWmBm4ZOKDNI8bKtF7czThI6GXwmFlMU.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/ss/ssS2x0Wl67rwXHaVHsh6CO7ayn9fQ5saIwATKN6O-nI.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/t1/t1w3t0uQeIB6mj-VliOTOvNCAcjMoQdBxMlac-VXXUk.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/tV/tVUTHHlY5TMaPTcTIRE487ouNUpGmQVD_Ab6VAuDGw0.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/tu/tuEq0SXuQh3A3UWa1dGXRLlKGMt6evB5YqwFJRyPvIE.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/v-/v-N2813JF9StwoLTE-8AAriPnHbuvVx-m9DzTCXCH9M.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/x0/x00ZU4Y_G6K5u2IqypZTnQIPb--furSWaQfLMsVfEqo.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/xC/xCexSNESQ_s5_Nb67lUl0oXgCpdisNQNvtsR-hfgIAo.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/xg/xgfY0nnn8IRgObhr6ZixwkE7oqh7Ksdwe2VRgjKNB9A.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/xp/xp_GvoQomYX5lkhg7vSvVU0DGGy4QG_ldNHacZLqZt0.cache +0 -0
- metadata +371 -211
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e0533f6e8b60e5136780e30df1b7e3c76e683f8cef32788bb9e7b57d4579bb29
|
4
|
+
data.tar.gz: 628b1be61fb4dd822b759a3a291deec1087b23f6036e587eb93646e1d48aa800
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c2349f21eabc343db7493afacff68c92389d1e47537b03306386bfe43790ff949ecf564c9b0351f862286a9deff97febefb68a3d7a1028724a58659d43410c5
|
7
|
+
data.tar.gz: 49d10943f6050d03b40d5aefb8580945b4d9868ab55cf08dfbc93722b5681c0cf0c082a727928c64d516bfd14b66e9983fa4b7630cdc952d1eb0240fbf3ac2db
|
@@ -11,6 +11,7 @@ module AnyLogin
|
|
11
11
|
def any_login
|
12
12
|
try_not_to_leak_any_login_is_installed
|
13
13
|
head 403 && return unless AnyLogin.verify_access_proc.call(self)
|
14
|
+
add_to_previous
|
14
15
|
AnyLogin.provider::Controller.instance_method(:any_login_sign_in).bind(self).call
|
15
16
|
end
|
16
17
|
|
@@ -24,5 +25,21 @@ module AnyLogin
|
|
24
25
|
raise ActiveRecord::RecordNotFound
|
25
26
|
end
|
26
27
|
|
28
|
+
def user_id
|
29
|
+
params[:back_to_previous_id].presence || params[:selected_id].presence || params[:id]
|
30
|
+
end
|
31
|
+
|
32
|
+
def previous
|
33
|
+
cookies[AnyLogin.cookie_name] ||= ""
|
34
|
+
end
|
35
|
+
|
36
|
+
def previous_list
|
37
|
+
previous.split(',').take(AnyLogin.previous_limit)
|
38
|
+
end
|
39
|
+
|
40
|
+
def add_to_previous
|
41
|
+
cookies[AnyLogin.cookie_name] = ([user_id] + previous_list).uniq.join(',')
|
42
|
+
end
|
43
|
+
|
27
44
|
end
|
28
45
|
end
|
@@ -27,11 +27,34 @@ module AnyLogin
|
|
27
27
|
select_tag :selected_id, select_options, select_html_options
|
28
28
|
end
|
29
29
|
|
30
|
-
def
|
30
|
+
def any_login_previous_select
|
31
|
+
ids = any_login_previous_ids
|
32
|
+
return if ids.blank?
|
33
|
+
|
34
|
+
users = ids.collect do |id|
|
35
|
+
AnyLogin.klass.where(AnyLogin.klass.primary_key => id).first
|
36
|
+
end.compact
|
37
|
+
|
38
|
+
collection = AnyLogin::Collection.new(users).to_a
|
39
|
+
if collection.any?
|
40
|
+
select_options = options_for_select(collection)
|
41
|
+
[
|
42
|
+
content_tag(:span, id: 'anylogin_back_to_user') do
|
43
|
+
"History: "
|
44
|
+
end,
|
45
|
+
select_tag(:back_to_previous_id, select_options, select_html_options("Back to:"))
|
46
|
+
].join.html_safe
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def any_login_previous_ids
|
51
|
+
(cookies[AnyLogin.cookie_name].presence || '').split(',').take(AnyLogin.previous_limit)
|
52
|
+
end
|
53
|
+
|
54
|
+
def select_html_options(prompt = AnyLogin.select_prompt)
|
31
55
|
options = {}
|
32
|
-
#options = { :include_blank => true }
|
33
56
|
options[:onchange] = 'AnyLogin.on_select_change();' if AnyLogin.login_on == :both
|
34
|
-
options[:prompt] =
|
57
|
+
options[:prompt] = prompt
|
35
58
|
options
|
36
59
|
end
|
37
60
|
|
@@ -7,6 +7,7 @@
|
|
7
7
|
<%= any_login_id_input %>
|
8
8
|
<%= any_login_submit %>
|
9
9
|
<span id='current_user_information'><%= current_user_information %></span>
|
10
|
+
<%= any_login_previous_select %>
|
10
11
|
</span>
|
11
12
|
<% end %>
|
12
13
|
</div>
|
@@ -126,6 +127,7 @@
|
|
126
127
|
}
|
127
128
|
#any_login .any_login_user_information {
|
128
129
|
padding-left: 10px;
|
130
|
+
color: yellow;
|
129
131
|
}
|
130
132
|
#any_login #any_login_id_input {
|
131
133
|
width: 30px;
|
@@ -136,4 +138,9 @@
|
|
136
138
|
#any_login span#current_user_information span {
|
137
139
|
display: inline;
|
138
140
|
}
|
141
|
+
#any_login span#anylogin_back_to_user {
|
142
|
+
padding-left: 15px;
|
143
|
+
color: cyan;
|
144
|
+
display: inline;
|
145
|
+
}
|
139
146
|
</style>
|
data/lib/any_login.rb
CHANGED
@@ -61,6 +61,10 @@ module AnyLogin
|
|
61
61
|
mattr_accessor :limit
|
62
62
|
@@limit = 10
|
63
63
|
|
64
|
+
# Previous limit, integer or :none
|
65
|
+
mattr_accessor :previous_limit
|
66
|
+
@@previous_limit = 6
|
67
|
+
|
64
68
|
# Enable http basic authentication
|
65
69
|
mattr_accessor :http_basic_authentication_enabled
|
66
70
|
@@http_basic_authentication_enabled = false
|
@@ -89,6 +93,10 @@ module AnyLogin
|
|
89
93
|
@@klass = AnyLogin.klass_name.constantize
|
90
94
|
end
|
91
95
|
|
96
|
+
def self.cookie_name
|
97
|
+
"any_login_previous_#{Rails.application.class.parent_name}".underscore
|
98
|
+
end
|
99
|
+
|
92
100
|
private
|
93
101
|
|
94
102
|
def self.format_collection_raw(result)
|
@@ -10,7 +10,7 @@ module AnyLogin
|
|
10
10
|
|
11
11
|
def any_login_sign_in
|
12
12
|
reset_session
|
13
|
-
@loginable = AnyLogin.klass.find(
|
13
|
+
@loginable = AnyLogin.klass.find(user_id)
|
14
14
|
Object.const_get("#{AnyLogin.klass}Session").create(@loginable)
|
15
15
|
redirect_to main_app.send(AnyLogin.redirect_path_after_login)
|
16
16
|
end
|
@@ -10,7 +10,7 @@ module AnyLogin
|
|
10
10
|
|
11
11
|
def any_login_sign_in
|
12
12
|
reset_session
|
13
|
-
@loginable = AnyLogin.klass.find(
|
13
|
+
@loginable = AnyLogin.klass.find(user_id)
|
14
14
|
sign_in @loginable
|
15
15
|
redirect_to main_app.send(AnyLogin.redirect_path_after_login)
|
16
16
|
end
|
@@ -14,7 +14,7 @@ module AnyLogin
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def any_login_sign_in
|
17
|
-
@loginable = AnyLogin.klass.find(
|
17
|
+
@loginable = AnyLogin.klass.find(user_id)
|
18
18
|
|
19
19
|
sign_in = AnyLogin.sign_in || DEFAULT_SIGN_IN
|
20
20
|
instance_exec(@loginable, &sign_in)
|
@@ -10,7 +10,7 @@ module AnyLogin
|
|
10
10
|
|
11
11
|
def any_login_sign_in
|
12
12
|
reset_session
|
13
|
-
@loginable = AnyLogin.klass.find(
|
13
|
+
@loginable = AnyLogin.klass.find(user_id)
|
14
14
|
auto_login @loginable
|
15
15
|
redirect_to main_app.send(AnyLogin.redirect_path_after_login)
|
16
16
|
end
|
data/lib/any_login/version.rb
CHANGED
Binary file
|
@@ -1,5 +1,6 @@
|
|
1
1
|
<% if user_signed_in? %>
|
2
2
|
<h1>Hello, <%= current_user.name %></h2>
|
3
|
+
<p>Your email: <%= current_user.email %></p>
|
3
4
|
<% else %>
|
4
5
|
<h1>Please sign up to...</h1>
|
5
6
|
<% end %>
|
@@ -10,54 +11,6 @@
|
|
10
11
|
|
11
12
|
<hr/>
|
12
13
|
|
13
|
-
<!-- Main jumbotron for a primary marketing message or call to action -->
|
14
|
-
<div class="jumbotron">
|
15
|
-
<h1>Any Login Gem Dummy App</h1>
|
16
|
-
<p>Sample of AnyLogin + Devise Gem</p>
|
17
|
-
</div>
|
18
|
-
|
19
|
-
|
20
|
-
<div class="page-header">
|
21
|
-
<h1>Buttons</h1>
|
22
|
-
</div>
|
23
|
-
<p>
|
24
|
-
<button type="button" class="btn btn-lg btn-default">Default</button>
|
25
|
-
<button type="button" class="btn btn-lg btn-primary">Primary</button>
|
26
|
-
<button type="button" class="btn btn-lg btn-success">Success</button>
|
27
|
-
<button type="button" class="btn btn-lg btn-info">Info</button>
|
28
|
-
<button type="button" class="btn btn-lg btn-warning">Warning</button>
|
29
|
-
<button type="button" class="btn btn-lg btn-danger">Danger</button>
|
30
|
-
<button type="button" class="btn btn-lg btn-link">Link</button>
|
31
|
-
</p>
|
32
|
-
<p>
|
33
|
-
<button type="button" class="btn btn-default">Default</button>
|
34
|
-
<button type="button" class="btn btn-primary">Primary</button>
|
35
|
-
<button type="button" class="btn btn-success">Success</button>
|
36
|
-
<button type="button" class="btn btn-info">Info</button>
|
37
|
-
<button type="button" class="btn btn-warning">Warning</button>
|
38
|
-
<button type="button" class="btn btn-danger">Danger</button>
|
39
|
-
<button type="button" class="btn btn-link">Link</button>
|
40
|
-
</p>
|
41
|
-
<p>
|
42
|
-
<button type="button" class="btn btn-sm btn-default">Default</button>
|
43
|
-
<button type="button" class="btn btn-sm btn-primary">Primary</button>
|
44
|
-
<button type="button" class="btn btn-sm btn-success">Success</button>
|
45
|
-
<button type="button" class="btn btn-sm btn-info">Info</button>
|
46
|
-
<button type="button" class="btn btn-sm btn-warning">Warning</button>
|
47
|
-
<button type="button" class="btn btn-sm btn-danger">Danger</button>
|
48
|
-
<button type="button" class="btn btn-sm btn-link">Link</button>
|
49
|
-
</p>
|
50
|
-
<p>
|
51
|
-
<button type="button" class="btn btn-xs btn-default">Default</button>
|
52
|
-
<button type="button" class="btn btn-xs btn-primary">Primary</button>
|
53
|
-
<button type="button" class="btn btn-xs btn-success">Success</button>
|
54
|
-
<button type="button" class="btn btn-xs btn-info">Info</button>
|
55
|
-
<button type="button" class="btn btn-xs btn-warning">Warning</button>
|
56
|
-
<button type="button" class="btn btn-xs btn-danger">Danger</button>
|
57
|
-
<button type="button" class="btn btn-xs btn-link">Link</button>
|
58
|
-
</p>
|
59
|
-
|
60
|
-
|
61
14
|
<div class="page-header">
|
62
15
|
<h1>Tables</h1>
|
63
16
|
</div>
|
@@ -128,403 +81,3 @@
|
|
128
81
|
</div>
|
129
82
|
</div>
|
130
83
|
|
131
|
-
<div class="row">
|
132
|
-
<div class="col-md-6">
|
133
|
-
<table class="table table-bordered">
|
134
|
-
<thead>
|
135
|
-
<tr>
|
136
|
-
<th>#</th>
|
137
|
-
<th>First Name</th>
|
138
|
-
<th>Last Name</th>
|
139
|
-
<th>Username</th>
|
140
|
-
</tr>
|
141
|
-
</thead>
|
142
|
-
<tbody>
|
143
|
-
<tr>
|
144
|
-
<td rowspan="2">1</td>
|
145
|
-
<td>Mark</td>
|
146
|
-
<td>Otto</td>
|
147
|
-
<td>@mdo</td>
|
148
|
-
</tr>
|
149
|
-
<tr>
|
150
|
-
<td>Mark</td>
|
151
|
-
<td>Otto</td>
|
152
|
-
<td>@TwBootstrap</td>
|
153
|
-
</tr>
|
154
|
-
<tr>
|
155
|
-
<td>2</td>
|
156
|
-
<td>Jacob</td>
|
157
|
-
<td>Thornton</td>
|
158
|
-
<td>@fat</td>
|
159
|
-
</tr>
|
160
|
-
<tr>
|
161
|
-
<td>3</td>
|
162
|
-
<td colspan="2">Larry the Bird</td>
|
163
|
-
<td>@twitter</td>
|
164
|
-
</tr>
|
165
|
-
</tbody>
|
166
|
-
</table>
|
167
|
-
</div>
|
168
|
-
<div class="col-md-6">
|
169
|
-
<table class="table table-condensed">
|
170
|
-
<thead>
|
171
|
-
<tr>
|
172
|
-
<th>#</th>
|
173
|
-
<th>First Name</th>
|
174
|
-
<th>Last Name</th>
|
175
|
-
<th>Username</th>
|
176
|
-
</tr>
|
177
|
-
</thead>
|
178
|
-
<tbody>
|
179
|
-
<tr>
|
180
|
-
<td>1</td>
|
181
|
-
<td>Mark</td>
|
182
|
-
<td>Otto</td>
|
183
|
-
<td>@mdo</td>
|
184
|
-
</tr>
|
185
|
-
<tr>
|
186
|
-
<td>2</td>
|
187
|
-
<td>Jacob</td>
|
188
|
-
<td>Thornton</td>
|
189
|
-
<td>@fat</td>
|
190
|
-
</tr>
|
191
|
-
<tr>
|
192
|
-
<td>3</td>
|
193
|
-
<td colspan="2">Larry the Bird</td>
|
194
|
-
<td>@twitter</td>
|
195
|
-
</tr>
|
196
|
-
</tbody>
|
197
|
-
</table>
|
198
|
-
</div>
|
199
|
-
</div>
|
200
|
-
|
201
|
-
<div class="page-header">
|
202
|
-
<h1>Labels</h1>
|
203
|
-
</div>
|
204
|
-
<h1>
|
205
|
-
<span class="label label-default">Default</span>
|
206
|
-
<span class="label label-primary">Primary</span>
|
207
|
-
<span class="label label-success">Success</span>
|
208
|
-
<span class="label label-info">Info</span>
|
209
|
-
<span class="label label-warning">Warning</span>
|
210
|
-
<span class="label label-danger">Danger</span>
|
211
|
-
</h1>
|
212
|
-
<h2>
|
213
|
-
<span class="label label-default">Default</span>
|
214
|
-
<span class="label label-primary">Primary</span>
|
215
|
-
<span class="label label-success">Success</span>
|
216
|
-
<span class="label label-info">Info</span>
|
217
|
-
<span class="label label-warning">Warning</span>
|
218
|
-
<span class="label label-danger">Danger</span>
|
219
|
-
</h2>
|
220
|
-
<h3>
|
221
|
-
<span class="label label-default">Default</span>
|
222
|
-
<span class="label label-primary">Primary</span>
|
223
|
-
<span class="label label-success">Success</span>
|
224
|
-
<span class="label label-info">Info</span>
|
225
|
-
<span class="label label-warning">Warning</span>
|
226
|
-
<span class="label label-danger">Danger</span>
|
227
|
-
</h3>
|
228
|
-
<h4>
|
229
|
-
<span class="label label-default">Default</span>
|
230
|
-
<span class="label label-primary">Primary</span>
|
231
|
-
<span class="label label-success">Success</span>
|
232
|
-
<span class="label label-info">Info</span>
|
233
|
-
<span class="label label-warning">Warning</span>
|
234
|
-
<span class="label label-danger">Danger</span>
|
235
|
-
</h4>
|
236
|
-
<h5>
|
237
|
-
<span class="label label-default">Default</span>
|
238
|
-
<span class="label label-primary">Primary</span>
|
239
|
-
<span class="label label-success">Success</span>
|
240
|
-
<span class="label label-info">Info</span>
|
241
|
-
<span class="label label-warning">Warning</span>
|
242
|
-
<span class="label label-danger">Danger</span>
|
243
|
-
</h5>
|
244
|
-
<h6>
|
245
|
-
<span class="label label-default">Default</span>
|
246
|
-
<span class="label label-primary">Primary</span>
|
247
|
-
<span class="label label-success">Success</span>
|
248
|
-
<span class="label label-info">Info</span>
|
249
|
-
<span class="label label-warning">Warning</span>
|
250
|
-
<span class="label label-danger">Danger</span>
|
251
|
-
</h6>
|
252
|
-
<p>
|
253
|
-
<span class="label label-default">Default</span>
|
254
|
-
<span class="label label-primary">Primary</span>
|
255
|
-
<span class="label label-success">Success</span>
|
256
|
-
<span class="label label-info">Info</span>
|
257
|
-
<span class="label label-warning">Warning</span>
|
258
|
-
<span class="label label-danger">Danger</span>
|
259
|
-
</p>
|
260
|
-
|
261
|
-
|
262
|
-
<div class="page-header">
|
263
|
-
<h1>Badges</h1>
|
264
|
-
</div>
|
265
|
-
<p>
|
266
|
-
<a href="#">Inbox <span class="badge">42</span></a>
|
267
|
-
</p>
|
268
|
-
<ul class="nav nav-pills" role="tablist">
|
269
|
-
<li role="presentation" class="active"><a href="#">Home <span class="badge">42</span></a></li>
|
270
|
-
<li role="presentation"><a href="#">Profile</a></li>
|
271
|
-
<li role="presentation"><a href="#">Messages <span class="badge">3</span></a></li>
|
272
|
-
</ul>
|
273
|
-
|
274
|
-
|
275
|
-
<div class="page-header">
|
276
|
-
<h1>Dropdown menus</h1>
|
277
|
-
</div>
|
278
|
-
<div class="dropdown theme-dropdown clearfix">
|
279
|
-
<a id="dropdownMenu1" href="#" class="sr-only dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
|
280
|
-
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
|
281
|
-
<li class="active"><a href="#">Action</a></li>
|
282
|
-
<li><a href="#">Another action</a></li>
|
283
|
-
<li><a href="#">Something else here</a></li>
|
284
|
-
<li role="separator" class="divider"></li>
|
285
|
-
<li><a href="#">Separated link</a></li>
|
286
|
-
</ul>
|
287
|
-
</div>
|
288
|
-
|
289
|
-
|
290
|
-
<div class="page-header">
|
291
|
-
<h1>Navs</h1>
|
292
|
-
</div>
|
293
|
-
<ul class="nav nav-tabs" role="tablist">
|
294
|
-
<li role="presentation" class="active"><a href="#">Home</a></li>
|
295
|
-
<li role="presentation"><a href="#">Profile</a></li>
|
296
|
-
<li role="presentation"><a href="#">Messages</a></li>
|
297
|
-
</ul>
|
298
|
-
<ul class="nav nav-pills" role="tablist">
|
299
|
-
<li role="presentation" class="active"><a href="#">Home</a></li>
|
300
|
-
<li role="presentation"><a href="#">Profile</a></li>
|
301
|
-
<li role="presentation"><a href="#">Messages</a></li>
|
302
|
-
</ul>
|
303
|
-
|
304
|
-
|
305
|
-
<div class="page-header">
|
306
|
-
<h1>Navbars</h1>
|
307
|
-
</div>
|
308
|
-
|
309
|
-
<nav class="navbar navbar-default">
|
310
|
-
<div class="container">
|
311
|
-
<div class="navbar-header">
|
312
|
-
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
|
313
|
-
<span class="sr-only">Toggle navigation</span>
|
314
|
-
<span class="icon-bar"></span>
|
315
|
-
<span class="icon-bar"></span>
|
316
|
-
<span class="icon-bar"></span>
|
317
|
-
</button>
|
318
|
-
<a class="navbar-brand" href="#">Project name</a>
|
319
|
-
</div>
|
320
|
-
<div class="navbar-collapse collapse">
|
321
|
-
<ul class="nav navbar-nav">
|
322
|
-
<li class="active"><a href="#">Home</a></li>
|
323
|
-
<li><a href="#about">About</a></li>
|
324
|
-
<li><a href="#contact">Contact</a></li>
|
325
|
-
<li class="dropdown">
|
326
|
-
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
|
327
|
-
<ul class="dropdown-menu">
|
328
|
-
<li><a href="#">Action</a></li>
|
329
|
-
<li><a href="#">Another action</a></li>
|
330
|
-
<li><a href="#">Something else here</a></li>
|
331
|
-
<li role="separator" class="divider"></li>
|
332
|
-
<li class="dropdown-header">Nav header</li>
|
333
|
-
<li><a href="#">Separated link</a></li>
|
334
|
-
<li><a href="#">One more separated link</a></li>
|
335
|
-
</ul>
|
336
|
-
</li>
|
337
|
-
</ul>
|
338
|
-
</div><!--/.nav-collapse -->
|
339
|
-
</div>
|
340
|
-
</nav>
|
341
|
-
|
342
|
-
<nav class="navbar navbar-inverse">
|
343
|
-
<div class="container">
|
344
|
-
<div class="navbar-header">
|
345
|
-
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
|
346
|
-
<span class="sr-only">Toggle navigation</span>
|
347
|
-
<span class="icon-bar"></span>
|
348
|
-
<span class="icon-bar"></span>
|
349
|
-
<span class="icon-bar"></span>
|
350
|
-
</button>
|
351
|
-
<a class="navbar-brand" href="#">Project name</a>
|
352
|
-
</div>
|
353
|
-
<div class="navbar-collapse collapse">
|
354
|
-
<ul class="nav navbar-nav">
|
355
|
-
<li class="active"><a href="#">Home</a></li>
|
356
|
-
<li><a href="#about">About</a></li>
|
357
|
-
<li><a href="#contact">Contact</a></li>
|
358
|
-
<li class="dropdown">
|
359
|
-
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
|
360
|
-
<ul class="dropdown-menu">
|
361
|
-
<li><a href="#">Action</a></li>
|
362
|
-
<li><a href="#">Another action</a></li>
|
363
|
-
<li><a href="#">Something else here</a></li>
|
364
|
-
<li role="separator" class="divider"></li>
|
365
|
-
<li class="dropdown-header">Nav header</li>
|
366
|
-
<li><a href="#">Separated link</a></li>
|
367
|
-
<li><a href="#">One more separated link</a></li>
|
368
|
-
</ul>
|
369
|
-
</li>
|
370
|
-
</ul>
|
371
|
-
</div><!--/.nav-collapse -->
|
372
|
-
</div>
|
373
|
-
</nav>
|
374
|
-
|
375
|
-
|
376
|
-
<div class="page-header">
|
377
|
-
<h1>Alerts</h1>
|
378
|
-
</div>
|
379
|
-
<div class="alert alert-success" role="alert">
|
380
|
-
<strong>Well done!</strong> You successfully read this important alert message.
|
381
|
-
</div>
|
382
|
-
<div class="alert alert-info" role="alert">
|
383
|
-
<strong>Heads up!</strong> This alert needs your attention, but it's not super important.
|
384
|
-
</div>
|
385
|
-
<div class="alert alert-warning" role="alert">
|
386
|
-
<strong>Warning!</strong> Best check yo self, you're not looking too good.
|
387
|
-
</div>
|
388
|
-
<div class="alert alert-danger" role="alert">
|
389
|
-
<strong>Oh snap!</strong> Change a few things up and try submitting again.
|
390
|
-
</div>
|
391
|
-
|
392
|
-
|
393
|
-
<div class="page-header">
|
394
|
-
<h1>Progress bars</h1>
|
395
|
-
</div>
|
396
|
-
<div class="progress">
|
397
|
-
<div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;"><span class="sr-only">60% Complete</span></div>
|
398
|
-
</div>
|
399
|
-
<div class="progress">
|
400
|
-
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 40%"><span class="sr-only">40% Complete (success)</span></div>
|
401
|
-
</div>
|
402
|
-
<div class="progress">
|
403
|
-
<div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100" style="width: 20%"><span class="sr-only">20% Complete</span></div>
|
404
|
-
</div>
|
405
|
-
<div class="progress">
|
406
|
-
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%"><span class="sr-only">60% Complete (warning)</span></div>
|
407
|
-
</div>
|
408
|
-
<div class="progress">
|
409
|
-
<div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 80%"><span class="sr-only">80% Complete (danger)</span></div>
|
410
|
-
</div>
|
411
|
-
<div class="progress">
|
412
|
-
<div class="progress-bar progress-bar-striped" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%"><span class="sr-only">60% Complete</span></div>
|
413
|
-
</div>
|
414
|
-
<div class="progress">
|
415
|
-
<div class="progress-bar progress-bar-success" style="width: 35%"><span class="sr-only">35% Complete (success)</span></div>
|
416
|
-
<div class="progress-bar progress-bar-warning" style="width: 20%"><span class="sr-only">20% Complete (warning)</span></div>
|
417
|
-
<div class="progress-bar progress-bar-danger" style="width: 10%"><span class='sr-only'>10% Complete (danger)</span></div>
|
418
|
-
</div>
|
419
|
-
|
420
|
-
|
421
|
-
<div class="page-header">
|
422
|
-
<h1>List groups</h1>
|
423
|
-
</div>
|
424
|
-
<div class="row">
|
425
|
-
<div class="col-sm-4">
|
426
|
-
<ul class="list-group">
|
427
|
-
<li class="list-group-item">Cras justo odio</li>
|
428
|
-
<li class="list-group-item">Dapibus ac facilisis in</li>
|
429
|
-
<li class="list-group-item">Morbi leo risus</li>
|
430
|
-
<li class="list-group-item">Porta ac consectetur ac</li>
|
431
|
-
<li class="list-group-item">Vestibulum at eros</li>
|
432
|
-
</ul>
|
433
|
-
</div><!-- /.col-sm-4 -->
|
434
|
-
<div class="col-sm-4">
|
435
|
-
<div class="list-group">
|
436
|
-
<a href="#" class="list-group-item active">
|
437
|
-
Cras justo odio
|
438
|
-
</a>
|
439
|
-
<a href="#" class="list-group-item">Dapibus ac facilisis in</a>
|
440
|
-
<a href="#" class="list-group-item">Morbi leo risus</a>
|
441
|
-
<a href="#" class="list-group-item">Porta ac consectetur ac</a>
|
442
|
-
<a href="#" class="list-group-item">Vestibulum at eros</a>
|
443
|
-
</div>
|
444
|
-
</div><!-- /.col-sm-4 -->
|
445
|
-
<div class="col-sm-4">
|
446
|
-
<div class="list-group">
|
447
|
-
<a href="#" class="list-group-item active">
|
448
|
-
<h4 class="list-group-item-heading">List group item heading</h4>
|
449
|
-
<p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
|
450
|
-
</a>
|
451
|
-
<a href="#" class="list-group-item">
|
452
|
-
<h4 class="list-group-item-heading">List group item heading</h4>
|
453
|
-
<p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
|
454
|
-
</a>
|
455
|
-
<a href="#" class="list-group-item">
|
456
|
-
<h4 class="list-group-item-heading">List group item heading</h4>
|
457
|
-
<p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
|
458
|
-
</a>
|
459
|
-
</div>
|
460
|
-
</div><!-- /.col-sm-4 -->
|
461
|
-
</div>
|
462
|
-
|
463
|
-
|
464
|
-
<div class="page-header">
|
465
|
-
<h1>Panels</h1>
|
466
|
-
</div>
|
467
|
-
<div class="row">
|
468
|
-
<div class="col-sm-4">
|
469
|
-
<div class="panel panel-default">
|
470
|
-
<div class="panel-heading">
|
471
|
-
<h3 class="panel-title">Panel title</h3>
|
472
|
-
</div>
|
473
|
-
<div class="panel-body">
|
474
|
-
Panel content
|
475
|
-
</div>
|
476
|
-
</div>
|
477
|
-
<div class="panel panel-primary">
|
478
|
-
<div class="panel-heading">
|
479
|
-
<h3 class="panel-title">Panel title</h3>
|
480
|
-
</div>
|
481
|
-
<div class="panel-body">
|
482
|
-
Panel content
|
483
|
-
</div>
|
484
|
-
</div>
|
485
|
-
</div><!-- /.col-sm-4 -->
|
486
|
-
<div class="col-sm-4">
|
487
|
-
<div class="panel panel-success">
|
488
|
-
<div class="panel-heading">
|
489
|
-
<h3 class="panel-title">Panel title</h3>
|
490
|
-
</div>
|
491
|
-
<div class="panel-body">
|
492
|
-
Panel content
|
493
|
-
</div>
|
494
|
-
</div>
|
495
|
-
<div class="panel panel-info">
|
496
|
-
<div class="panel-heading">
|
497
|
-
<h3 class="panel-title">Panel title</h3>
|
498
|
-
</div>
|
499
|
-
<div class="panel-body">
|
500
|
-
Panel content
|
501
|
-
</div>
|
502
|
-
</div>
|
503
|
-
</div><!-- /.col-sm-4 -->
|
504
|
-
<div class="col-sm-4">
|
505
|
-
<div class="panel panel-warning">
|
506
|
-
<div class="panel-heading">
|
507
|
-
<h3 class="panel-title">Panel title</h3>
|
508
|
-
</div>
|
509
|
-
<div class="panel-body">
|
510
|
-
Panel content
|
511
|
-
</div>
|
512
|
-
</div>
|
513
|
-
<div class="panel panel-danger">
|
514
|
-
<div class="panel-heading">
|
515
|
-
<h3 class="panel-title">Panel title</h3>
|
516
|
-
</div>
|
517
|
-
<div class="panel-body">
|
518
|
-
Panel content
|
519
|
-
</div>
|
520
|
-
</div>
|
521
|
-
</div><!-- /.col-sm-4 -->
|
522
|
-
</div>
|
523
|
-
|
524
|
-
|
525
|
-
<div class="page-header">
|
526
|
-
<h1>Wells</h1>
|
527
|
-
</div>
|
528
|
-
<div class="well">
|
529
|
-
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sed diam eget risus varius blandit sit amet non magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Aenean lacinia bibendum nulla sed consectetur.</p>
|
530
|
-
</div>
|