explorak5_login_prueba 6.0.4 → 6.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/explorak5_login_prueba/app/views/login/canvas/_forgot_password_link.html.erb +20 -0
- data/lib/explorak5_login_prueba/app/views/login/canvas/_instructure_logo.svg +34 -0
- data/lib/explorak5_login_prueba/app/views/login/canvas/_login_banner.html.erb +49 -0
- data/lib/explorak5_login_prueba/app/views/login/canvas/_sso_buttons.html.erb +40 -0
- data/lib/explorak5_login_prueba/app/views/login/canvas/mobile_login.html.erb +144 -0
- data/lib/explorak5_login_prueba/app/views/login/canvas/new.html.erb +32 -0
- data/lib/explorak5_login_prueba/app/views/login/email_verify/show.html.erb +43 -0
- data/lib/explorak5_login_prueba/app/views/login/logout_confirm.html.erb +53 -0
- data/lib/explorak5_login_prueba/app/views/login/logout_landing.html.erb +46 -0
- data/lib/explorak5_login_prueba/app/views/login/new.html.erb +36 -0
- data/lib/explorak5_login_prueba/app/views/login/otp/new.html.erb +144 -0
- data/lib/explorak5_login_prueba/app/views/login/shared/_header_logo.html.erb +21 -0
- data/lib/explorak5_login_prueba/stylesheets/_ic_app_style_layout.scss +542 -0
- data/lib/explorak5_login_prueba/version.rb +1 -1
- metadata +15 -2
- /data/lib/explorak5_login_prueba/app/views/{login_page → login/canvas}/_login_content.html.erb +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a688b28bdb8ddc5ef2a361ac5d3ae4303ab8a262279875b2e4dd07fa476458d8
|
4
|
+
data.tar.gz: e7a3c0981ffbd145c44b0b124bf360e037ce1714fa48e2e105477413408b7dfa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbfa35f7e98b3f39edbff21af23b00c200575547d87afecc32996646dd5a81fed6465f54d0e120bd30131d2dc857e3ccd32afe4b8bfeca76ef57e54e3b4c75aa
|
7
|
+
data.tar.gz: 951d2e8727db18c96933b12b3ab84315555a39961a05908cedf456567bcfc3deb34d0f4cf4a4e799d96054e9faacd926ea4a9ff4e51937e39fd722d6da7e1499
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<%
|
2
|
+
# Copyright (C) 2015 - present Instructure, Inc.
|
3
|
+
#
|
4
|
+
# This file is part of Canvas.
|
5
|
+
#
|
6
|
+
# Canvas is free software: you can redistribute it and/or modify it under
|
7
|
+
# the terms of the GNU Affero General Public License as published by the Free
|
8
|
+
# Software Foundation, version 3 of the License.
|
9
|
+
#
|
10
|
+
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
11
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
12
|
+
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
13
|
+
# details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Affero General Public License along
|
16
|
+
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
%>
|
18
|
+
|
19
|
+
<% url = (params[:canvas_login] != '1' && @domain_root_account.try(:forgot_password_external_url)) || "#" %>
|
20
|
+
<%= link_to t('dont_know_password', "Forgot Password?"), url, :class => (url != '#' ? "ic-Login__link not_external" : "ic-Login__link forgot_password_link"), :id => "login_forgot_password" %>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="110" height="16" viewBox="25 265 743 80"><title>Instructure</title>
|
2
|
+
<g class="ic-Instructure-Logo">
|
3
|
+
<g>
|
4
|
+
<polygon class="st0" points="23.8,331.5 72.3,358.8 120.7,331.5 72.3,304.2 "/>
|
5
|
+
<polygon class="st0" points="98.4,293.7 120.7,281.1 98.3,268.5 76,281.1 "/>
|
6
|
+
<polygon class="st0" points="94.6,266.4 72.3,253.8 49.9,266.4 72.3,279 "/>
|
7
|
+
<polygon class="st0" points="68.5,281.1 46.2,268.5 23.8,281.1 46.2,293.7 "/>
|
8
|
+
</g>
|
9
|
+
<g>
|
10
|
+
<path class="st0" d="M166.3,344.9v-78.1h12.9v78.1H166.3z"/>
|
11
|
+
<path class="st0" d="M202,344.9v-78.1H215l16.4,48.3v-48.3h11.8v78.1h-12.3l-17.1-50.7v50.7H202z"/>
|
12
|
+
<path class="st0" d="M357.4,278.2h-13v66.7h-12.9v-66.7h-13v-11.4h39V278.2z"/>
|
13
|
+
<path class="st0" d="M404.6,344.9l-9.9-31.1h-6.5v31.1h-12.9v-78.1h20.2c11.8,0,19.6,4.7,19.6,16.5v13.9c0,7.5-3.1,12.2-8.5,14.5
|
14
|
+
l11.2,33.1H404.6z M388.2,302.7h6.8c4.2,0,7.1-1.6,7.1-7.1v-10.1c0-5.6-2.9-7.1-7.1-7.1h-6.8V302.7z"/>
|
15
|
+
<path class="st0" d="M475.4,329.3c0,12-7.6,16.5-19.4,16.5h-0.4c-11.8,0-19.4-4.4-19.4-16.5v-62.5h12.9v60.5
|
16
|
+
c0,5.6,2.5,7.1,6.7,7.1c4.2,0,6.7-1.6,6.7-7.1v-60.5h12.9V329.3z"/>
|
17
|
+
<path class="st0" d="M536.5,329.3c0,12-7.8,16.5-19.6,16.5h-0.2c-11.8,0-19.6-4.4-19.6-16.5v-46.8c0-11.6,7.8-16.5,19.6-16.5h0.2
|
18
|
+
c11.8,0,19.6,4.9,19.6,16.5v9h-12.9v-7c0-5.5-2.7-7.1-6.8-7.1c-4.1,0-6.8,1.7-6.8,7.1v42.8c0,5.5,2.7,7.1,6.8,7.1
|
19
|
+
c4.1,0,6.8-1.7,6.8-7.1v-8.9h12.9V329.3z"/>
|
20
|
+
<path class="st0" d="M592.1,278.2h-13v66.7h-12.9v-66.7h-13v-11.4h39V278.2z"/>
|
21
|
+
<path class="st0" d="M649,329.3c0,12-7.6,16.5-19.4,16.5h-0.4c-11.8,0-19.4-4.4-19.4-16.5v-62.5h12.9v60.5c0,5.6,2.5,7.1,6.7,7.1
|
22
|
+
c4.2,0,6.7-1.6,6.7-7.1v-60.5H649V329.3z"/>
|
23
|
+
<path class="st0" d="M700.4,344.9l-9.9-31.1H684v31.1H671v-78.1h20.2c11.8,0,19.6,4.7,19.6,16.5v13.9c0,7.5-3.1,12.2-8.5,14.5
|
24
|
+
l11.2,33.1H700.4z M684,302.7h6.8c4.2,0,7.1-1.6,7.1-7.1v-10.1c0-5.6-2.9-7.1-7.1-7.1H684V302.7z"/>
|
25
|
+
<path class="st0" d="M289.8,289.5v-5.7c0-4.9-2.8-6.7-6.6-6.7c-3.8,0-6.6,1.8-6.6,6.7v5.4c0,4,1.3,5.8,5,7.9l9.1,5.1
|
26
|
+
c7.5,4.2,11.9,7.7,11.9,16.1v11.3c0,12-7.5,16.3-19.3,16.3h-0.2c-11.8,0-19.3-4.1-19.3-16.3v-8.4h12.7v6.6c0,4.8,2.8,6.9,6.7,6.9
|
27
|
+
c3.9,0,6.7-2.1,6.7-6.9v-6.1c0-4-1.2-6-5.1-8.1l-9-5.1c-7.6-4.3-11.9-7.9-11.9-16.1V282c0-11.6,8.5-16.1,19.2-16.1h0.2
|
28
|
+
c10.7,0,19.2,4.5,19.2,16.1v7.5H289.8z"/>
|
29
|
+
<polygon class="st0" points="732.5,344.9 732.5,266.9 766.7,266.9 766.7,278.2 745.4,278.2 745.4,299.6 763.3,299.6 763.3,311
|
30
|
+
745.4,311 745.4,333.5 767,333.5 767,344.9 "/>
|
31
|
+
</g>
|
32
|
+
</g>
|
33
|
+
|
34
|
+
</svg>
|
@@ -0,0 +1,49 @@
|
|
1
|
+
<%
|
2
|
+
# Copyright (C) 2015 - present Instructure, Inc.
|
3
|
+
#
|
4
|
+
# This file is part of Canvas.
|
5
|
+
#
|
6
|
+
# Canvas is free software: you can redistribute it and/or modify it under
|
7
|
+
# the terms of the GNU Affero General Public License as published by the Free
|
8
|
+
# Software Foundation, version 3 of the License.
|
9
|
+
#
|
10
|
+
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
11
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
12
|
+
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
13
|
+
# details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Affero General Public License along
|
16
|
+
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
%>
|
18
|
+
|
19
|
+
<% hide_self_reg_banner ||= false %>
|
20
|
+
|
21
|
+
<% if @domain_root_account && @domain_root_account.self_registration? && !hide_self_reg_banner %>
|
22
|
+
<% if @domain_root_account.self_registration_type == 'observer' %>
|
23
|
+
<% js_env :ACCOUNT => account_json(@domain_root_account, nil, session, ['registration_settings']),
|
24
|
+
:PASSWORD_POLICY => @domain_root_account.password_policy %>
|
25
|
+
<%= link_to '#',
|
26
|
+
:id => 'coenrollment_link',
|
27
|
+
:class => "ic-Login__link ic-Login__register-banner",
|
28
|
+
data: reg_link_data(nil) do %>
|
29
|
+
<div class="ic-Login__banner-title">
|
30
|
+
<%= t('Parent of a Canvas User?') %>
|
31
|
+
</div>
|
32
|
+
<div class="ic-Login__banner-subtitle">
|
33
|
+
<%= t('Click Here For an Account') %>
|
34
|
+
</div>
|
35
|
+
<% end %>
|
36
|
+
<% else %>
|
37
|
+
<%= link_to "/register_from_website",
|
38
|
+
:id => 'register_link',
|
39
|
+
:class => "ic-Login__link ic-Login__register-banner" do %>
|
40
|
+
<div class="ic-Login__banner-title">
|
41
|
+
<%= t('Need a Canvas Account?') %>
|
42
|
+
</div>
|
43
|
+
<div class="ic-Login__banner-subtitle">
|
44
|
+
<%= t("Click Here, It's Free!") %>
|
45
|
+
</div>
|
46
|
+
<% end %>
|
47
|
+
<% end %>
|
48
|
+
<% end %>
|
49
|
+
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<%
|
2
|
+
# Copyright (C) 2015 - present Instructure, Inc.
|
3
|
+
#
|
4
|
+
# This file is part of Canvas.
|
5
|
+
#
|
6
|
+
# Canvas is free software: you can redistribute it and/or modify it under
|
7
|
+
# the terms of the GNU Affero General Public License as published by the Free
|
8
|
+
# Software Foundation, version 3 of the License.
|
9
|
+
#
|
10
|
+
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
11
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
12
|
+
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
13
|
+
# details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Affero General Public License along
|
16
|
+
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
%>
|
18
|
+
|
19
|
+
<% if aacs.present? %>
|
20
|
+
<div class="ic-Login__sso">
|
21
|
+
<ul class="ic-Login__sso-list">
|
22
|
+
<% aacs.each do |aac| %>
|
23
|
+
<% only_one = aacs.size < 2 %>
|
24
|
+
<% only_one_of_type = aacs.select { |a| a.auth_type == aac.auth_type }.size < 2 %>
|
25
|
+
<li class="ic-Login__sso-list__item">
|
26
|
+
<a href="/login/<%= aac.auth_type %><%= only_one_of_type ? '' : "/#{aac.id}" %>"
|
27
|
+
class="Button Button--primary <%= only_one ? 'ic-Login__sso-button--has-text ' : '' %>ic-Login__sso-button ic-Login__sso-button--<%= aac.auth_type %>">
|
28
|
+
<%= render partial: "shared/auth_type_icon",
|
29
|
+
locals: {
|
30
|
+
auth_type: aac.auth_type,
|
31
|
+
sr_message: only_one ? nil : aac.class.login_message,
|
32
|
+
with_login_text: only_one ? aac.class.login_message : nil
|
33
|
+
} %>
|
34
|
+
</a>
|
35
|
+
|
36
|
+
</li>
|
37
|
+
<% end %>
|
38
|
+
</ul>
|
39
|
+
</div>
|
40
|
+
<% end %>
|
@@ -0,0 +1,144 @@
|
|
1
|
+
<%
|
2
|
+
# Copyright (C) 2011 - present Instructure, Inc.
|
3
|
+
#
|
4
|
+
# This file is part of Canvas.
|
5
|
+
#
|
6
|
+
# Canvas is free software: you can redistribute it and/or modify it under
|
7
|
+
# the terms of the GNU Affero General Public License as published by the Free
|
8
|
+
# Software Foundation, version 3 of the License.
|
9
|
+
#
|
10
|
+
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
11
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
12
|
+
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
13
|
+
# details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Affero General Public License along
|
16
|
+
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
%>
|
18
|
+
|
19
|
+
<% js_bundle :mobile_login %>
|
20
|
+
|
21
|
+
<% extend Api::V1::Account %>
|
22
|
+
<%
|
23
|
+
unique_id = begin
|
24
|
+
params.dig(:pseudonym_session, :unique_id)&.to_s
|
25
|
+
rescue TypeError
|
26
|
+
nil
|
27
|
+
end
|
28
|
+
%>
|
29
|
+
|
30
|
+
<div class="mobileLogin-Header">
|
31
|
+
<span class="screenreader-only">
|
32
|
+
<%= t 'Canvas by Instructure' %>
|
33
|
+
<script type="text/javascript">
|
34
|
+
window.onload = function() {
|
35
|
+
var msg
|
36
|
+
var email = document.querySelector('[placeholder="Email"]')
|
37
|
+
function showMessage() {
|
38
|
+
var elt = document.querySelector('span#screenreader-errormsg')
|
39
|
+
if (elt) elt.innerText = msg
|
40
|
+
}
|
41
|
+
<% if request.post? && flash[:error] %>
|
42
|
+
msg = '<%= t "Error logging in: %{error_msg}", error_msg: flash[:error] %>'
|
43
|
+
setTimeout(showMessage, 1500)
|
44
|
+
if (email) email.focus()
|
45
|
+
<% end %>
|
46
|
+
}
|
47
|
+
</script>
|
48
|
+
<span aria-live="assertive" id="screenreader-errormsg"></span>
|
49
|
+
</span>
|
50
|
+
</div>
|
51
|
+
<%= form_for :pseudonym_session, :url => url_for({ action: :create }.merge(params.slice(:id).to_unsafe_h)), :html => {:id => "login_form", :class => "front face", :novalidate => 'novalidate', :autocomplete => "off" } do |f| %>
|
52
|
+
|
53
|
+
<div class="ic-Form-control">
|
54
|
+
<input
|
55
|
+
class="ic-Input"
|
56
|
+
autocomplete="off"
|
57
|
+
autocorrect="off"
|
58
|
+
placeholder="<%= @login_handle_name%>"
|
59
|
+
type="<%= @login_handle_is_email ? 'email' : 'text' %>"
|
60
|
+
name="pseudonym_session[unique_id]"
|
61
|
+
value="<%= unique_id %>" />
|
62
|
+
</div>
|
63
|
+
<div class="ic-Form-control">
|
64
|
+
<input
|
65
|
+
class="ic-Input"
|
66
|
+
type="password"
|
67
|
+
name="pseudonym_session[password]"
|
68
|
+
autocomplete="off"
|
69
|
+
autocorrect="off"
|
70
|
+
placeholder="<%= t :password, "Password" %>" />
|
71
|
+
</div>
|
72
|
+
<button
|
73
|
+
type="submit"
|
74
|
+
class="Button Button--primary Button--block"><%= t('log_in', 'Log In') %>
|
75
|
+
</button>
|
76
|
+
|
77
|
+
<% if request.post? && flash[:error] %>
|
78
|
+
<div aria-hidden="true" class="error"><%= flash[:error] %></div>
|
79
|
+
<% end %>
|
80
|
+
|
81
|
+
<div class="forgotBlock">
|
82
|
+
<% if url = params[:canvas_login].blank? && @domain_root_account.try(:forgot_password_external_url) %>
|
83
|
+
<%= link_to t('dont_know_password', "Forgot Password?"), url, :class => 'forgot-password' %>
|
84
|
+
<% else %>
|
85
|
+
<a tabindex="0" role="link" class="forgot-password flip-to-back"><%= t('dont_know_password', "Forgot Password?") %></a>
|
86
|
+
<% end %>
|
87
|
+
</div>
|
88
|
+
<% end %>
|
89
|
+
<%= form_for :pseudonym_session, :url => forgot_password_path, :html => {:id => "forgot_password_form", :class => 'back face', :autocomplete => "off" } do |f| %>
|
90
|
+
<div class="ic-Form-control">
|
91
|
+
<label for="pseudonym_session_unique_id_forgot" class="screenreader-only"><%= t('login_handle', "Enter your %{login_handle_name} and we'll send you a link to change your password.", :login_handle_name => @login_handle_name) %></label>
|
92
|
+
<input
|
93
|
+
class="ic-Input"
|
94
|
+
autocomplete="off"
|
95
|
+
autocorrect="off"
|
96
|
+
type="<%= @login_handle_is_email ? 'email' : 'text' %>"
|
97
|
+
name="pseudonym_session[unique_id_forgot]"
|
98
|
+
value=""
|
99
|
+
placeholder="<%= @login_handle_name %>"
|
100
|
+
id="pseudonym_session_unique_id_forgot" />
|
101
|
+
</div>
|
102
|
+
<button
|
103
|
+
type="submit"
|
104
|
+
class="Button Button--primary Button--block request-password-button"
|
105
|
+
data-text-while-loading="<%= t(:sending, "Sending...") %>"
|
106
|
+
data-text-when-loaded="<%= t(:sent, "Sent!") %>"
|
107
|
+
data-text-on-error="<%= t(:error, "An error occurred, please try again later.") %>"
|
108
|
+
>
|
109
|
+
<%= t('buttons.request_password', 'Request Password') %>
|
110
|
+
</button>
|
111
|
+
<div class="forgotBlock">
|
112
|
+
<a tabindex="0" role="link" class="flip-to-front"><%= t('back_to_login', "Back to Login") %></a>
|
113
|
+
</div>
|
114
|
+
<% end %>
|
115
|
+
|
116
|
+
<% if @domain_root_account && @domain_root_account.self_registration? %>
|
117
|
+
<% if @domain_root_account.self_registration_type == 'observer' %>
|
118
|
+
<% js_env :ACCOUNT => account_json(@domain_root_account, nil, session, ['registration_settings']),
|
119
|
+
:PASSWORD_POLICY => @domain_root_account.password_policy %>
|
120
|
+
<div id='coenrollment_link' class='enrollment_link'>
|
121
|
+
<div class="ic-Login__banner-title">
|
122
|
+
<%= t('Parent of a Canvas User?') %>
|
123
|
+
</div>
|
124
|
+
<%= link_to '#',
|
125
|
+
:class => "ic-Login__link ic-Login__register-banner ic-Login__banner-subtitle",
|
126
|
+
data: reg_link_data(nil) do %>
|
127
|
+
<%= t('Create Account') %>
|
128
|
+
<% end %>
|
129
|
+
</div>
|
130
|
+
<% else %>
|
131
|
+
<div class='enrollment_link'>
|
132
|
+
<%= link_to "/register_from_website",
|
133
|
+
:id => 'register_link',
|
134
|
+
:class => "ic-Login__link ic-Login__register-banner" do %>
|
135
|
+
<div class="ic-Login__banner-title">
|
136
|
+
<%= t('Need a Canvas Account?') %>
|
137
|
+
</div>
|
138
|
+
<div class="ic-Login__banner-subtitle">
|
139
|
+
<%= t("Click Here, It's Free!") %>
|
140
|
+
</div>
|
141
|
+
<% end %>
|
142
|
+
</div>
|
143
|
+
<% end %>
|
144
|
+
<% end %>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<%
|
2
|
+
# Copyright (C) 2015 - present Instructure, Inc.
|
3
|
+
#
|
4
|
+
# This file is part of Canvas.
|
5
|
+
#
|
6
|
+
# Canvas is free software: you can redistribute it and/or modify it under
|
7
|
+
# the terms of the GNU Affero General Public License as published by the Free
|
8
|
+
# Software Foundation, version 3 of the License.
|
9
|
+
#
|
10
|
+
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
11
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
12
|
+
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
13
|
+
# details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Affero General Public License along
|
16
|
+
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
%>
|
18
|
+
|
19
|
+
<%
|
20
|
+
css_bundle :login
|
21
|
+
js_bundle :login
|
22
|
+
provide :page_title, t(:page_title, "Log In to Canvas")
|
23
|
+
%>
|
24
|
+
|
25
|
+
<% extend Api::V1::Account %>
|
26
|
+
|
27
|
+
<% add_body_class "full-width ic-Login-Body" %>
|
28
|
+
<%= render "login/canvas/new_login_content" %>
|
29
|
+
|
30
|
+
<% if flash[:logged_out] && HostUrl.file_host(@domain_root_account, request.host_with_port) %>
|
31
|
+
<img class="hidden-readable" src="//<%= HostUrl.file_host(@domain_root_account, request.host_with_port) %>/file_session/clear"/>
|
32
|
+
<% end %>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<%
|
2
|
+
# Copyright (C) 2024 - present Instructure, Inc.
|
3
|
+
#
|
4
|
+
# This file is part of Canvas.
|
5
|
+
#
|
6
|
+
# Canvas is free software: you can redistribute it and/or modify it under
|
7
|
+
# the terms of the GNU Affero General Public License as published by the Free
|
8
|
+
# Software Foundation, version 3 of the License.
|
9
|
+
#
|
10
|
+
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
11
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
12
|
+
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
13
|
+
# details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Affero General Public License along
|
16
|
+
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
%>
|
18
|
+
|
19
|
+
<%
|
20
|
+
css_bundle :login_confirm
|
21
|
+
@headers = false
|
22
|
+
add_body_class "full-width modal body--login-confirmation"
|
23
|
+
provide :page_title, t("Account Verification Required")
|
24
|
+
%>
|
25
|
+
|
26
|
+
<div id="modal-box" class="ic-Login-confirmation">
|
27
|
+
<header class="ic-Login-confirmation__header">
|
28
|
+
<%= image_tag("login/canvas-logo@2x.png", class: "ic-Login-confirmation__logo", alt: "Canvas by Instructure") %>
|
29
|
+
</header>
|
30
|
+
<div class="ic-Login-confirmation__content">
|
31
|
+
<h2 class="ic-Login-confirmation__headline"><%= t("Account Verification Required") %></h2>
|
32
|
+
<p><%= t("To secure your account, you must validate your email before you can log in to Canvas.") %></p>
|
33
|
+
<p><%= t("A verification code has been sent to %{email}. Please provide this code below:", email: @verification_email) %></p>
|
34
|
+
<%= form_tag login_email_verify_url do %>
|
35
|
+
<%= hidden_field_tag :d, @jwt %>
|
36
|
+
<%= text_field_tag :code, nil, class: "ic-Input", placeholder: t("Verification Code"), autocomplete: "off" %>
|
37
|
+
<div class="button_box ic-Login-confirmation__actions">
|
38
|
+
<%= submit_tag(t("Submit"), class: "Button Button--primary") %>
|
39
|
+
<%= link_to(t("Cancel"), login_url, :class => "Button Button--secondary") %>
|
40
|
+
</div>
|
41
|
+
<% end %>
|
42
|
+
</div>
|
43
|
+
</div>
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<%
|
2
|
+
# Copyright (C) 2014 - present Instructure, Inc.
|
3
|
+
#
|
4
|
+
# This file is part of Canvas.
|
5
|
+
#
|
6
|
+
# Canvas is free software: you can redistribute it and/or modify it under
|
7
|
+
# the terms of the GNU Affero General Public License as published by the Free
|
8
|
+
# Software Foundation, version 3 of the License.
|
9
|
+
#
|
10
|
+
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
11
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
12
|
+
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
13
|
+
# details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Affero General Public License along
|
16
|
+
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
%>
|
18
|
+
|
19
|
+
<%
|
20
|
+
css_bundle :login
|
21
|
+
@headers = false
|
22
|
+
provide :page_title, t(:page_title, "Log Out")
|
23
|
+
add_body_class "full-width ic-Login-Body"
|
24
|
+
%>
|
25
|
+
<div class="ic-Login">
|
26
|
+
<div class="ic-Login__container">
|
27
|
+
<div class="ic-Login__content">
|
28
|
+
<div class="ic-Login__innerContent">
|
29
|
+
<div class="ic-Login__header">
|
30
|
+
<%= render :partial => 'login/shared/header_logo' %>
|
31
|
+
</div>
|
32
|
+
<div class="ic-Login__body">
|
33
|
+
<h1 class="ic-Login__title">
|
34
|
+
<%= t 'log_out', 'Log Out' %>
|
35
|
+
</h1>
|
36
|
+
<p class="ic-Login__text">
|
37
|
+
<%= t 'details.log_out', 'Are you sure you want to log out of Canvas?' %>
|
38
|
+
</p>
|
39
|
+
<%= form_tag logout_path, method: :delete do %>
|
40
|
+
<div class="ic-Login__actions">
|
41
|
+
<%= link_to(t(:cancel, "Cancel"), '/', :class => "ic-Login__link") %>
|
42
|
+
<div class="ic-Login__actions--right">
|
43
|
+
<button type="submit" class="Button Button--login" id="Button--logout-confirm">
|
44
|
+
<%= t("Log Out") %>
|
45
|
+
</button>
|
46
|
+
</div>
|
47
|
+
</div>
|
48
|
+
<% end %>
|
49
|
+
</div> <!-- end ic-Login__body -->
|
50
|
+
</div> <!-- end ic-Login__innerContent -->
|
51
|
+
</div> <!-- end ic-Login__content -->
|
52
|
+
</div> <!-- end ic-Login__content -->
|
53
|
+
</div> <!-- end ic-Login__container -->
|
@@ -0,0 +1,46 @@
|
|
1
|
+
<%
|
2
|
+
# Copyright (C) 2014 - present Instructure, Inc.
|
3
|
+
#
|
4
|
+
# This file is part of Canvas.
|
5
|
+
#
|
6
|
+
# Canvas is free software: you can redistribute it and/or modify it under
|
7
|
+
# the terms of the GNU Affero General Public License as published by the Free
|
8
|
+
# Software Foundation, version 3 of the License.
|
9
|
+
#
|
10
|
+
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
11
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
12
|
+
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
13
|
+
# details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Affero General Public License along
|
16
|
+
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
%>
|
18
|
+
|
19
|
+
<%
|
20
|
+
css_bundle :login
|
21
|
+
@headers = false
|
22
|
+
provide :page_title, t(:page_title, "Logged Out")
|
23
|
+
add_body_class "full-width ic-Login-Body"
|
24
|
+
%>
|
25
|
+
<div class="ic-Login">
|
26
|
+
<div class="ic-Login__container">
|
27
|
+
<div class="ic-Login__content">
|
28
|
+
<div class="ic-Login__innerContent">
|
29
|
+
<div class="ic-Login__header">
|
30
|
+
<%= render :partial => 'login/shared/header_logo' %>
|
31
|
+
</div>
|
32
|
+
<div class="ic-Login__body">
|
33
|
+
<h1 class="ic-Login__title">
|
34
|
+
<%= t 'Logged Out' %>
|
35
|
+
</h1>
|
36
|
+
<p class="ic-Login__text">
|
37
|
+
<%= t 'You are logged out of Canvas.' %>
|
38
|
+
</p>
|
39
|
+
<div class="ic-Login__actions">
|
40
|
+
<%= link_to(t("Click here to log in again"), login_url, :class => "ic-Login__link") %>
|
41
|
+
</div>
|
42
|
+
</div> <!-- end ic-Login__body -->
|
43
|
+
</div> <!-- end ic-Login__innerContent -->
|
44
|
+
</div> <!-- end ic-Login__content -->
|
45
|
+
</div> <!-- end ic-Login__content -->
|
46
|
+
</div> <!-- end ic-Login__container -->
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<%
|
2
|
+
# Copyright (C) 2015 - present Instructure, Inc.
|
3
|
+
#
|
4
|
+
# This file is part of Canvas.
|
5
|
+
#
|
6
|
+
# Canvas is free software: you can redistribute it and/or modify it under
|
7
|
+
# the terms of the GNU Affero General Public License as published by the Free
|
8
|
+
# Software Foundation, version 3 of the License.
|
9
|
+
#
|
10
|
+
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
11
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
12
|
+
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
13
|
+
# details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Affero General Public License along
|
16
|
+
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
%>
|
18
|
+
|
19
|
+
<% provide :page_title do %>
|
20
|
+
<%= t 'Failed to Log In' %>
|
21
|
+
<% end %>
|
22
|
+
|
23
|
+
<div id="unauthorized_holder">
|
24
|
+
<% css_bundle("unauthorized_message") %>
|
25
|
+
<div id="unauthorized_message">
|
26
|
+
<h2 class="ui-state-error">
|
27
|
+
<%= t 'Failed to Log In' %>
|
28
|
+
</h2>
|
29
|
+
<p>
|
30
|
+
<%= flash[:delegated_message] %>
|
31
|
+
</p>
|
32
|
+
<p>
|
33
|
+
<%= t "You can try to *log in again*.", wrapper: link_to('\1', login_url) %>
|
34
|
+
</p>
|
35
|
+
</div>
|
36
|
+
</div>
|
@@ -0,0 +1,144 @@
|
|
1
|
+
<%
|
2
|
+
# Copyright (C) 2012 - present Instructure, Inc.
|
3
|
+
#
|
4
|
+
# This file is part of Canvas.
|
5
|
+
#
|
6
|
+
# Canvas is free software: you can redistribute it and/or modify it under
|
7
|
+
# the terms of the GNU Affero General Public License as published by the Free
|
8
|
+
# Software Foundation, version 3 of the License.
|
9
|
+
#
|
10
|
+
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
11
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
12
|
+
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
13
|
+
# details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Affero General Public License along
|
16
|
+
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
%>
|
18
|
+
|
19
|
+
<%
|
20
|
+
css_bundle :otp_login
|
21
|
+
js_bundle :otp_login
|
22
|
+
@headers = false
|
23
|
+
add_body_class "full-width modal body--login-confirmation"
|
24
|
+
provide :page_title, t("Multi-Factor Authentication")
|
25
|
+
%>
|
26
|
+
|
27
|
+
<div id="modal-box" class="ic-Login-confirmation">
|
28
|
+
<header class="ic-Login-confirmation__header">
|
29
|
+
<%= image_tag("login/canvas-logo@2x.png", class:"ic-Login-confirmation__logo", alt:"Canvas by Instructure") %>
|
30
|
+
</header>
|
31
|
+
<div class="ic-Login-confirmation__content">
|
32
|
+
<h2 class="ic-Login-confirmation__headline"><%= t("Multi-Factor Authentication") %></h2>
|
33
|
+
<% if configuring? %>
|
34
|
+
<div>
|
35
|
+
<% if @current_user.mfa_settings(pseudonym_hint: @current_pseudonym) == :required %>
|
36
|
+
<p><%= t("You are required to set up Multi-Factor Authentication.") %></p>
|
37
|
+
<% end %>
|
38
|
+
<% otp_via_sms_message = otp_via_sms_in_us_region? ? mt(<<~MESSAGE) : ""
|
39
|
+
The device can be a code generator or a mobile phone that receives text messages.
|
40
|
+
**Using an authenticator app is strongly recommended for enhanced security.**
|
41
|
+
MESSAGE
|
42
|
+
%>
|
43
|
+
<%= mt(<<~BODY, otp_via_sms_message:)
|
44
|
+
Multi-Factor Authentication (MFA) enhances security by requiring a physical device and your Canvas login password.
|
45
|
+
%{otp_via_sms_message}
|
46
|
+
|
47
|
+
Configure MFA by scanning the QR code with a Time-based One-Time Password (TOTP) app on iPhone or Android
|
48
|
+
(e.g., Google Authenticator, Microsoft Authenticator, Authy). After setup, print backup codes from your profile
|
49
|
+
page if your primary MFA device is unavailable.
|
50
|
+
BODY
|
51
|
+
%>
|
52
|
+
<div class="content-box">
|
53
|
+
<div class="grid-row <%= otp_via_sms_in_us_region? ? "otp-login__grid-row-divider" : "center-xs" %>">
|
54
|
+
<div class="<%= otp_via_sms_in_us_region? ? "col-xs-12 col-sm-12 col-md-6" : "col-xs-12" %>">
|
55
|
+
<h3><%= t("Use Authenticator App") %></h3>
|
56
|
+
<%
|
57
|
+
provisioning_uri = ROTP::TOTP.new(session[:pending_otp_secret_key]).provisioning_uri("#{@domain_root_account.name} Canvas- #{@current_pseudonym.unique_id}")
|
58
|
+
qr_code = RQRCode::QRCode.new(provisioning_uri, level: :l)
|
59
|
+
%>
|
60
|
+
<div class="otp-qr-code">
|
61
|
+
<img src="data:image/png;base64,<%= Base64.encode64(qr_code.as_png(module_px_size: 4).to_s).strip %>" alt="<%= t("Time-based one-time password (TOTP) QR code") %>">
|
62
|
+
</div>
|
63
|
+
<p class="<%= "otp-login__text-align--xs-center" if otp_via_sms_in_us_region? %>">
|
64
|
+
<strong><%= t("Secret Key:") %></strong>
|
65
|
+
<br>
|
66
|
+
<span class="otp-login__secret-key"><%= session[:pending_otp_secret_key] %></span>
|
67
|
+
</p>
|
68
|
+
</div>
|
69
|
+
<% if otp_via_sms_in_us_region? %>
|
70
|
+
<div class="col-xs-12 col-sm-12 col-md-6">
|
71
|
+
<h3><%= t("Use SMS") %></h3>
|
72
|
+
<p><%= t("Only US mobile numbers are supported.") %></p>
|
73
|
+
<% ccs = @current_user.communication_channels.sms.unretired.map { |cc| [cc.path, cc.id] } %>
|
74
|
+
<% unless ccs.empty? %>
|
75
|
+
<% ccs << ["<< #{t("a new mobile number")} >>", "{{id}}"] %>
|
76
|
+
<%= form_for :otp_login, :url => send_otp_via_sms_path, :html => {:id => "select_phone_form", :class => "ic-Form-group ic-Form-group--horizontal"} do |f| %>
|
77
|
+
<div class="ic-Form-control">
|
78
|
+
<%= f.blabel :otp_communication_channel_id, en: "US Mobile Number", class: "ic-Label" %>
|
79
|
+
<div class="controls">
|
80
|
+
<%= f.select(:otp_communication_channel_id, ccs, { selected: @cc.try(:id) }, class: "ic-Input") %>
|
81
|
+
</div>
|
82
|
+
</div>
|
83
|
+
<div>
|
84
|
+
<button type="submit" class="Button Button--primary">
|
85
|
+
<%= t("Send") %>
|
86
|
+
</button>
|
87
|
+
</div>
|
88
|
+
<% end %>
|
89
|
+
<% end %>
|
90
|
+
<%= form_for :otp_login, url: send_otp_via_sms_path, html: { id: "new_phone_form", style: (hidden(false) unless ccs.empty?), class: "ic-Form-group" } do |f| %>
|
91
|
+
<div class="ic-Form-control">
|
92
|
+
<%= f.blabel :phone_number, :en => "US Mobile Number", :class => "ic-Label" %>
|
93
|
+
<div class="controls">
|
94
|
+
<%= f.text_field :phone_number, :class => "ic-Input" %>
|
95
|
+
</div>
|
96
|
+
</div>
|
97
|
+
<div>
|
98
|
+
<button type="submit" class="Button Button--primary">
|
99
|
+
<%= t("Send") %>
|
100
|
+
</button>
|
101
|
+
<% unless ccs.empty? %>
|
102
|
+
<a href="#" class="Button Button--link" id="back_to_choose_number_link">
|
103
|
+
<%= t("Choose an existing number") %>
|
104
|
+
</a>
|
105
|
+
<% end %>
|
106
|
+
</div>
|
107
|
+
<% end %>
|
108
|
+
</div>
|
109
|
+
<% end %>
|
110
|
+
</div>
|
111
|
+
</div>
|
112
|
+
</div>
|
113
|
+
<% end %>
|
114
|
+
<% if @cc %>
|
115
|
+
<div>
|
116
|
+
<p><%= t("Please enter the verification code sent to your mobile phone number.") %></p>
|
117
|
+
</div>
|
118
|
+
<% if @cc.otp_impaired? %>
|
119
|
+
<div class="alert alert-warning">
|
120
|
+
<p><%= t("Please check your email if your SMS code does not arrive soon.") %></p>
|
121
|
+
</div>
|
122
|
+
<% end %>
|
123
|
+
<% else %>
|
124
|
+
<div>
|
125
|
+
<p><%= t("Please enter the verification code shown by your token.") %></p>
|
126
|
+
</div>
|
127
|
+
<% end %>
|
128
|
+
<%= form_for :otp_login, url: otp_login_path, html: { id: "login_form", class: "ic-Form-group" } do |f| %>
|
129
|
+
<div class="ic-Form-control">
|
130
|
+
<div class="ic-Input-group">
|
131
|
+
<%= f.blabel :verification_code, :en => "Verification Code", :class => "ic-Label" %>
|
132
|
+
<%= f.text_field :verification_code, :class => "ic-Input", :autocomplete => "off" %>
|
133
|
+
<button type="submit" class="Button Button--primary">
|
134
|
+
<%= t("Verify") %>
|
135
|
+
</button>
|
136
|
+
</div>
|
137
|
+
</div>
|
138
|
+
<div>
|
139
|
+
<%= f.check_box :remember_me %>
|
140
|
+
<%= f.label :remember_me, :en => "Remember this computer" %>
|
141
|
+
</div>
|
142
|
+
<% end %>
|
143
|
+
</div>
|
144
|
+
</div>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<%
|
2
|
+
# Copyright (C) 2015 - present Instructure, Inc.
|
3
|
+
#
|
4
|
+
# This file is part of Canvas.
|
5
|
+
#
|
6
|
+
# Canvas is free software: you can redistribute it and/or modify it under
|
7
|
+
# the terms of the GNU Affero General Public License as published by the Free
|
8
|
+
# Software Foundation, version 3 of the License.
|
9
|
+
#
|
10
|
+
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
11
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
12
|
+
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
13
|
+
# details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Affero General Public License along
|
16
|
+
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
%>
|
18
|
+
|
19
|
+
<div class="ic-Login-header__logo">
|
20
|
+
<%= image_tag(brand_variable("ic-brand-Login-logo"), :alt => alt_text_for_login_logo) %>
|
21
|
+
</div>
|
@@ -0,0 +1,542 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) 2015 - present Instructure, Inc.
|
3
|
+
*
|
4
|
+
* This file is part of Canvas.
|
5
|
+
*
|
6
|
+
* Canvas is free software: you can redistribute it and/or modify it under
|
7
|
+
* the terms of the GNU Affero General Public License as published by the Free
|
8
|
+
* Software Foundation, version 3 of the License.
|
9
|
+
*
|
10
|
+
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
11
|
+
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
12
|
+
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
13
|
+
* details.
|
14
|
+
*
|
15
|
+
* You should have received a copy of the GNU Affero General Public License along
|
16
|
+
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
*/
|
18
|
+
|
19
|
+
/// Below are the shared styles for our content pieces. Because our layout
|
20
|
+
/// changes based on whether our course menu is open or shut
|
21
|
+
/// we needed to ensure we share the right styles with these sections, but
|
22
|
+
/// still enforce different breakpoints when needed
|
23
|
+
|
24
|
+
@mixin shared-main-content {display: flex;}
|
25
|
+
@mixin shared-primary {
|
26
|
+
flex: 1;
|
27
|
+
// Fix Firefox and IE Edge issues with contents breaking out of flex container
|
28
|
+
// min-width: 1px;
|
29
|
+
min-width: 90%;
|
30
|
+
}
|
31
|
+
@mixin shared-secondary {
|
32
|
+
width: $ic-right-side-width;
|
33
|
+
padding-#{direction(left)}: $ic-sp*2;
|
34
|
+
}
|
35
|
+
|
36
|
+
$ic-left-side-width: $ic-sp*16;
|
37
|
+
|
38
|
+
|
39
|
+
body:not(.ic-no-flex-layout):not(.embedded) .ic-app-main-content {
|
40
|
+
box-sizing: border-box;
|
41
|
+
flex: 1;
|
42
|
+
// Fix Firefox and IE Edge issues with contents breaking out of flex container
|
43
|
+
min-width: 80%;
|
44
|
+
// Agregado por explora k5
|
45
|
+
// padding-left: 30px;
|
46
|
+
// margin-left: 3%;
|
47
|
+
|
48
|
+
@include mobile-only {
|
49
|
+
& {
|
50
|
+
min-width: 1px;
|
51
|
+
padding-left: 0%;
|
52
|
+
margin-left: 0.25%;
|
53
|
+
margin-right: 0.25%;
|
54
|
+
}
|
55
|
+
}
|
56
|
+
}
|
57
|
+
|
58
|
+
.ic-Layout-contentWrapper {
|
59
|
+
box-sizing: border-box;
|
60
|
+
}
|
61
|
+
|
62
|
+
.ic-Layout-contentMain {
|
63
|
+
padding: $ic-sp*2;
|
64
|
+
@include mobile-only {
|
65
|
+
& {
|
66
|
+
// padding-#{direction(left)}: $ic-sp;
|
67
|
+
// padding-#{direction(right)}: $ic-sp;
|
68
|
+
padding-#{direction(left)}: $ic-sp*0;
|
69
|
+
padding-#{direction(right)}: $ic-sp*0;
|
70
|
+
}
|
71
|
+
}
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
body.is-inside-submission-frame & {
|
76
|
+
padding-#{direction(left)}: $ic-sp;
|
77
|
+
padding-#{direction(right)}: $ic-sp;
|
78
|
+
}
|
79
|
+
|
80
|
+
body.no-headers & {
|
81
|
+
padding-top: 0;
|
82
|
+
}
|
83
|
+
|
84
|
+
body.embedded & {
|
85
|
+
padding: 0 1em 1em;
|
86
|
+
}
|
87
|
+
|
88
|
+
body.ic-framed-lti-tool & {
|
89
|
+
padding: 0 $ic-sp*2;
|
90
|
+
}
|
91
|
+
|
92
|
+
body.ic-full-screen-lti-tool & {
|
93
|
+
padding: 0;
|
94
|
+
}
|
95
|
+
}
|
96
|
+
|
97
|
+
.ic-app-main-content__secondary {
|
98
|
+
box-sizing: border-box;
|
99
|
+
min-width: 1px;
|
100
|
+
padding: $ic-sp*2;
|
101
|
+
@include mobile-only {
|
102
|
+
& {
|
103
|
+
padding-#{direction(left)}: $ic-sp;
|
104
|
+
padding-#{direction(right)}: $ic-sp;
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
108
|
+
position: relative; // note: this is also set for #right-side-wrapper in _#right-side.scss
|
109
|
+
// prevent safari bug where content disappears on scroll
|
110
|
+
-webkit-transform: translate3d(0, 0, 0);
|
111
|
+
}
|
112
|
+
|
113
|
+
/// Layout when the course nav IS OPEN
|
114
|
+
body.course-menu-expanded {
|
115
|
+
&:not(.ic-no-flex-layout):not(.embedded) .ic-app-main-content {
|
116
|
+
@include breakpoint(desktop--nav-open) { @include shared-main-content; }
|
117
|
+
}
|
118
|
+
&:not(.ic-no-flex-layout):not(.embedded) .ic-Layout-contentWrapper {
|
119
|
+
@include breakpoint(desktop--nav-open) {
|
120
|
+
@include shared-primary;
|
121
|
+
}
|
122
|
+
}
|
123
|
+
.ic-app-main-content__secondary {
|
124
|
+
@include breakpoint(desktop--nav-open) {
|
125
|
+
@include shared-secondary;
|
126
|
+
}
|
127
|
+
}
|
128
|
+
}
|
129
|
+
|
130
|
+
/// Layout when the course nav IS CLOSED
|
131
|
+
body:not(.course-menu-expanded) {
|
132
|
+
&:not(.ic-no-flex-layout):not(.embedded) .ic-app-main-content {
|
133
|
+
@include breakpoint(desktop) { @include shared-main-content; }
|
134
|
+
}
|
135
|
+
&:not(.ic-no-flex-layout):not(.embedded) .ic-Layout-contentWrapper {
|
136
|
+
@include breakpoint(desktop) {
|
137
|
+
@include shared-primary;
|
138
|
+
}
|
139
|
+
}
|
140
|
+
.ic-app-main-content__secondary {
|
141
|
+
@include breakpoint(desktop) {
|
142
|
+
@include shared-secondary;
|
143
|
+
}
|
144
|
+
}
|
145
|
+
}
|
146
|
+
|
147
|
+
.ic-app-footer {
|
148
|
+
.terms-of-service__link {
|
149
|
+
a {
|
150
|
+
@include ic-focus-base;
|
151
|
+
&:focus {
|
152
|
+
@include ic-focus-variant;
|
153
|
+
}
|
154
|
+
}
|
155
|
+
margin-top: -2px !important;
|
156
|
+
color: var(--ic-brand-font-color-dark-lightened-15) !important;
|
157
|
+
}
|
158
|
+
box-sizing: border-box;
|
159
|
+
padding: $ic-sp 0;
|
160
|
+
margin: 0 $ic-sp*2;
|
161
|
+
border-top: 1px solid $ic-border-light;
|
162
|
+
@include breakpoint(desktop) {
|
163
|
+
display: flex;
|
164
|
+
align-items: center;
|
165
|
+
}
|
166
|
+
body.modal & {
|
167
|
+
margin: 0;
|
168
|
+
padding: $ic-sp $ic-sp*2;
|
169
|
+
}
|
170
|
+
}
|
171
|
+
.ic-app-footer__links {
|
172
|
+
flex: 1;
|
173
|
+
display: flex;
|
174
|
+
a {
|
175
|
+
color: $ic-font-color--subdued;
|
176
|
+
margin-#{direction(right)}: $ic-sp;
|
177
|
+
@include fontSize($ic-font-size--xsmall);
|
178
|
+
}
|
179
|
+
@include breakpoint(desktop) {
|
180
|
+
justify-content: flex-end;
|
181
|
+
a { margin-#{direction(right)}: 0; margin-#{direction(left)}: $ic-sp; }
|
182
|
+
}
|
183
|
+
|
184
|
+
body.responsive_awareness & {
|
185
|
+
a {
|
186
|
+
@include mobile-only {
|
187
|
+
display: inline-block;
|
188
|
+
width: 100%;
|
189
|
+
}
|
190
|
+
}
|
191
|
+
@include mobile-only {
|
192
|
+
display: block;
|
193
|
+
}
|
194
|
+
}
|
195
|
+
}
|
196
|
+
|
197
|
+
.ic-app {
|
198
|
+
box-sizing: border-box;
|
199
|
+
min-height: 100vh;
|
200
|
+
}
|
201
|
+
|
202
|
+
// Agregado por explora k5
|
203
|
+
|
204
|
+
.login_links {
|
205
|
+
display: grid;
|
206
|
+
float: right;
|
207
|
+
grid-template-rows: 25px 25px 25px;
|
208
|
+
grid-row-gap: 75px;
|
209
|
+
margin-right: 50px;
|
210
|
+
width: 5%;
|
211
|
+
}
|
212
|
+
|
213
|
+
.btn-img-logout-text {
|
214
|
+
text-decoration: underline;
|
215
|
+
color: white;
|
216
|
+
background: transparent;
|
217
|
+
border: none;
|
218
|
+
}
|
219
|
+
|
220
|
+
.btn-img-logout {
|
221
|
+
background-size: 100px;
|
222
|
+
background-repeat: no-repeat;
|
223
|
+
height: 125px;
|
224
|
+
width: 125px;
|
225
|
+
background-color: transparent;
|
226
|
+
border: none;
|
227
|
+
background-position: center;
|
228
|
+
}
|
229
|
+
|
230
|
+
.btn-img-login-espol {
|
231
|
+
float: left;
|
232
|
+
width: 6%;
|
233
|
+
margin-left: 30px;
|
234
|
+
margin-top: 10px;
|
235
|
+
background-repeat: no-repeat;
|
236
|
+
height: 120px;
|
237
|
+
background-position: center;
|
238
|
+
background-size: contain;
|
239
|
+
background-color: transparent;
|
240
|
+
border: none;
|
241
|
+
}
|
242
|
+
|
243
|
+
.btn-img-login-pizarra {
|
244
|
+
width: auto;
|
245
|
+
background-repeat: no-repeat;
|
246
|
+
height: 120px;
|
247
|
+
background-position: center;
|
248
|
+
background-size: contain;
|
249
|
+
background-color: transparent;
|
250
|
+
border: none;
|
251
|
+
margin-top: 10px;
|
252
|
+
margin-bottom: 20px;
|
253
|
+
}
|
254
|
+
|
255
|
+
.btn-img-login-vinculos {
|
256
|
+
width: auto;
|
257
|
+
margin-top: 15px;
|
258
|
+
background-repeat: no-repeat;
|
259
|
+
height: 120px;
|
260
|
+
background-position: center;
|
261
|
+
background-size: contain;
|
262
|
+
background-color: transparent;
|
263
|
+
border: none;
|
264
|
+
}
|
265
|
+
|
266
|
+
.login_links-mobile {
|
267
|
+
display: grid;
|
268
|
+
float: right;
|
269
|
+
grid-template-rows: 25px 25px 25px;
|
270
|
+
grid-row-gap: 8px;
|
271
|
+
margin-top: -40px;
|
272
|
+
width: 15%;
|
273
|
+
}
|
274
|
+
|
275
|
+
.btn-img-login-espol-mobile {
|
276
|
+
float: left;
|
277
|
+
width: 12%;
|
278
|
+
background-repeat: no-repeat;
|
279
|
+
background-position: center;
|
280
|
+
background-size: contain;
|
281
|
+
background-color: transparent;
|
282
|
+
border: none;
|
283
|
+
height: 60px;
|
284
|
+
}
|
285
|
+
|
286
|
+
.btn-img-login-pizarra-mobile {
|
287
|
+
width: auto;
|
288
|
+
background-repeat: no-repeat;
|
289
|
+
background-position: center;
|
290
|
+
background-size: contain;
|
291
|
+
background-color: transparent;
|
292
|
+
border: none;
|
293
|
+
}
|
294
|
+
|
295
|
+
.btn-img-login-vinculos-mobile {
|
296
|
+
width: auto;
|
297
|
+
background-repeat: no-repeat;
|
298
|
+
background-position: center;
|
299
|
+
background-size: contain;
|
300
|
+
background-color: transparent;
|
301
|
+
border: none;
|
302
|
+
}
|
303
|
+
|
304
|
+
@include mobile-only {
|
305
|
+
.btn-img-login-espol {
|
306
|
+
float: left;
|
307
|
+
width: 10%;
|
308
|
+
margin-left: 30px;
|
309
|
+
margin-top: 10px;
|
310
|
+
background-repeat: no-repeat;
|
311
|
+
height: 120px;
|
312
|
+
background-position: center;
|
313
|
+
background-size: contain;
|
314
|
+
background-color: transparent;
|
315
|
+
border: none;
|
316
|
+
}
|
317
|
+
|
318
|
+
.login_links {
|
319
|
+
display: grid;
|
320
|
+
float: right;
|
321
|
+
grid-template-rows: 25px 25px 25px;
|
322
|
+
grid-row-gap: 75px;
|
323
|
+
margin-right: 50px;
|
324
|
+
width: 8%;
|
325
|
+
}
|
326
|
+
}
|
327
|
+
|
328
|
+
.ic-Layout-wrapper {
|
329
|
+
box-sizing: border-box;
|
330
|
+
min-height: 100vh;
|
331
|
+
|
332
|
+
body:not(.full-width):not(.outcomes):not(.body--login-confirmation) & {
|
333
|
+
// We want to add a max size to most pages in canvas
|
334
|
+
// unless it's a full-width app
|
335
|
+
max-width: 1366px;
|
336
|
+
}
|
337
|
+
|
338
|
+
body:not(.ic-no-flex-layout):not(.embedded) & {
|
339
|
+
display: flex;
|
340
|
+
flex-direction: column;
|
341
|
+
}
|
342
|
+
|
343
|
+
@include desktop-only {
|
344
|
+
body:not(.no-headers) & {
|
345
|
+
margin-#{direction(left)}: $ic-header-primary-width - 30;
|
346
|
+
}
|
347
|
+
|
348
|
+
body:not(.no-headers).primary-nav-expanded & {
|
349
|
+
margin-#{direction(left)}: $ic-header-primary-width;
|
350
|
+
}
|
351
|
+
}
|
352
|
+
|
353
|
+
body.embedded & {
|
354
|
+
height: 100%;
|
355
|
+
}
|
356
|
+
}
|
357
|
+
|
358
|
+
.ic-Layout-columns {
|
359
|
+
position: relative;
|
360
|
+
box-sizing: border-box;
|
361
|
+
z-index: 10;
|
362
|
+
|
363
|
+
body:not(.ic-no-flex-layout):not(.embedded):not(.is-inside-submission-frame) & {
|
364
|
+
flex: 1 0 auto;
|
365
|
+
// Fix Firefox and IE Edge issues with contents breaking out of flex container
|
366
|
+
min-width: 1px;
|
367
|
+
}
|
368
|
+
|
369
|
+
@include desktop-only {
|
370
|
+
body.course-menu-expanded:not(.ic-no-flex-layout):not(.embedded):not(.is-inside-submission-frame) & {
|
371
|
+
margin-#{direction(left)}: $ic-left-side-width;
|
372
|
+
// margin-#{direction(left)}: 90px;
|
373
|
+
// // Agregado por explora k5
|
374
|
+
// margin-right: -7%;
|
375
|
+
|
376
|
+
.ic-Layout-watermark {
|
377
|
+
#{direction(left)}: -$ic-left-side-width;
|
378
|
+
// #{direction(left)}: 90px;
|
379
|
+
}
|
380
|
+
}
|
381
|
+
}
|
382
|
+
|
383
|
+
body.ic-no-flex-layout & {
|
384
|
+
// min-height: 100vh;
|
385
|
+
}
|
386
|
+
|
387
|
+
body.no-headers &,
|
388
|
+
body.embedded & {
|
389
|
+
margin: 0;
|
390
|
+
border: 0 none;
|
391
|
+
background-color: transparent;
|
392
|
+
}
|
393
|
+
|
394
|
+
body.embedded & {
|
395
|
+
min-height: 0;
|
396
|
+
height: 100%;
|
397
|
+
}
|
398
|
+
}
|
399
|
+
|
400
|
+
.ic-Layout-watermark {
|
401
|
+
position: absolute;
|
402
|
+
#{direction(left)}: 0;
|
403
|
+
bottom: 0;
|
404
|
+
z-index: -1;
|
405
|
+
width: 100%;
|
406
|
+
height: 100%;
|
407
|
+
opacity: var(--ic-brand-watermark-opacity);
|
408
|
+
background-image: var(--ic-brand-watermark);
|
409
|
+
background-repeat: no-repeat;
|
410
|
+
background-position: direction(left) bottom;
|
411
|
+
}
|
412
|
+
|
413
|
+
.ic-app-course-menu {
|
414
|
+
transition: transform 1s ease-in-out;
|
415
|
+
transition-delay: 0.75s;
|
416
|
+
transform: translate3d(0,0,0);
|
417
|
+
box-sizing: border-box;
|
418
|
+
position: absolute;
|
419
|
+
top: 0; #{direction(right)}: 99.9999%;
|
420
|
+
// top: 0; #{direction(right)}: 100%;
|
421
|
+
width: $ic-left-side-width;
|
422
|
+
// padding: direction-sides($ic-sp*2 $ic-sp $ic-sp $ic-sp*2);
|
423
|
+
padding: direction-sides($ic-sp*2 $ic-sp $ic-sp $ic-sp*3);
|
424
|
+
opacity: 0;
|
425
|
+
body.course-menu-expanded & {
|
426
|
+
opacity: 1;
|
427
|
+
transform: translate3d(0,0,0);
|
428
|
+
}
|
429
|
+
&.ic-sticky-on {
|
430
|
+
bottom: 0;
|
431
|
+
padding: 0;
|
432
|
+
}
|
433
|
+
// account for the course term showing in the left-hand sub-nav
|
434
|
+
#section-tabs-header-subtitle {
|
435
|
+
padding: direction-sides(0 0 $ic-sp $ic-sp);
|
436
|
+
}
|
437
|
+
}
|
438
|
+
|
439
|
+
.ic-sticky-frame {
|
440
|
+
position: sticky;
|
441
|
+
top: 0;
|
442
|
+
max-height: 100vh;
|
443
|
+
padding: direction-sides($ic-sp*2 $ic-sp $ic-breadcrumbs-height $ic-sp*2);
|
444
|
+
box-sizing: border-box;
|
445
|
+
overflow-y: auto;
|
446
|
+
overscroll-behavior-y: contain;
|
447
|
+
}
|
448
|
+
|
449
|
+
.ic-sticky-frame.has-scrollbar {
|
450
|
+
padding: direction-sides($ic-sp*2 $ic-sp*0.2 $ic-breadcrumbs-height $ic-sp*2);
|
451
|
+
& .nav-icon{
|
452
|
+
padding: 0 3px;
|
453
|
+
}
|
454
|
+
}
|
455
|
+
|
456
|
+
.ic-app-nav-toggle-and-crumbs {
|
457
|
+
display: flex;
|
458
|
+
align-items: center;
|
459
|
+
//border-bottom: 1px solid $ic-border-light;
|
460
|
+
margin: 0 $ic-sp*2;
|
461
|
+
min-height: $ic-breadcrumbs-height;
|
462
|
+
box-sizing: border-box;
|
463
|
+
// Agregado por explora k5
|
464
|
+
max-width: 1000px;
|
465
|
+
|
466
|
+
|
467
|
+
.right-of-crumbs {
|
468
|
+
display: flex;
|
469
|
+
flex: 1;
|
470
|
+
flex-direction: row-reverse;
|
471
|
+
}
|
472
|
+
|
473
|
+
.right-of-crumbs > * {
|
474
|
+
margin-left: 12px;
|
475
|
+
}
|
476
|
+
}
|
477
|
+
|
478
|
+
.ic-app-course-nav-toggle {
|
479
|
+
margin-#{direction(right)}: $ic-sp;
|
480
|
+
padding: 0;
|
481
|
+
width: $ic-sp*3; height: ($ic-sp*3) - ($ic-sp*0.5);
|
482
|
+
// Agregado por explora k5
|
483
|
+
margin-top: 2%;
|
484
|
+
@include overwrite-default-icon-size(1.5rem);
|
485
|
+
i[class*=icon-], i[class^=icon-] { margin-#{direction(right)}: 0; }
|
486
|
+
}
|
487
|
+
|
488
|
+
.ic-app-crumbs {
|
489
|
+
flex: 1;
|
490
|
+
display: flex;
|
491
|
+
align-items: center;
|
492
|
+
box-sizing: border-box;
|
493
|
+
// Agregado por explora k5
|
494
|
+
max-width: 900px;
|
495
|
+
}
|
496
|
+
|
497
|
+
// Agregado por explora k5
|
498
|
+
|
499
|
+
@include mobile-only {
|
500
|
+
|
501
|
+
body:not(.ic-no-flex-layout):not(.embedded) .ic-app-main-content{
|
502
|
+
padding: 0;
|
503
|
+
}
|
504
|
+
|
505
|
+
#assignment_show{
|
506
|
+
display: flex;
|
507
|
+
flex-direction:column;
|
508
|
+
padding-right: 1em;
|
509
|
+
padding-left: 1em;
|
510
|
+
}
|
511
|
+
|
512
|
+
#assignment_show .assignment-buttons{
|
513
|
+
order: 6;
|
514
|
+
}
|
515
|
+
|
516
|
+
body:not(.ic-no-flex-layout):not(.embedded) .ic-app-main-content {
|
517
|
+
padding-left: 0px;
|
518
|
+
}
|
519
|
+
|
520
|
+
li.assignment.sort-disabled.search_show{
|
521
|
+
width: 100%;
|
522
|
+
margin: 0;
|
523
|
+
padding-right: 0;
|
524
|
+
padding-left: 13px;
|
525
|
+
flex-basis: max-content;
|
526
|
+
margin-top: 1em;
|
527
|
+
margin-bottom: 2em;
|
528
|
+
}
|
529
|
+
|
530
|
+
#assignment_show .assignment-title{
|
531
|
+
margin-bottom: 0!important;
|
532
|
+
.title{
|
533
|
+
margin: 0!important;
|
534
|
+
}
|
535
|
+
}
|
536
|
+
|
537
|
+
.ic-Layout-contentMain{
|
538
|
+
padding-top: 0;
|
539
|
+
margin-left: 3% !important;
|
540
|
+
}
|
541
|
+
|
542
|
+
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: explorak5_login_prueba
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0.
|
4
|
+
version: 6.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Ibarra
|
@@ -19,7 +19,19 @@ executables: []
|
|
19
19
|
extensions: []
|
20
20
|
extra_rdoc_files: []
|
21
21
|
files:
|
22
|
-
- lib/explorak5_login_prueba/app/views/
|
22
|
+
- lib/explorak5_login_prueba/app/views/login/canvas/_forgot_password_link.html.erb
|
23
|
+
- lib/explorak5_login_prueba/app/views/login/canvas/_instructure_logo.svg
|
24
|
+
- lib/explorak5_login_prueba/app/views/login/canvas/_login_banner.html.erb
|
25
|
+
- lib/explorak5_login_prueba/app/views/login/canvas/_login_content.html.erb
|
26
|
+
- lib/explorak5_login_prueba/app/views/login/canvas/_sso_buttons.html.erb
|
27
|
+
- lib/explorak5_login_prueba/app/views/login/canvas/mobile_login.html.erb
|
28
|
+
- lib/explorak5_login_prueba/app/views/login/canvas/new.html.erb
|
29
|
+
- lib/explorak5_login_prueba/app/views/login/email_verify/show.html.erb
|
30
|
+
- lib/explorak5_login_prueba/app/views/login/logout_confirm.html.erb
|
31
|
+
- lib/explorak5_login_prueba/app/views/login/logout_landing.html.erb
|
32
|
+
- lib/explorak5_login_prueba/app/views/login/new.html.erb
|
33
|
+
- lib/explorak5_login_prueba/app/views/login/otp/new.html.erb
|
34
|
+
- lib/explorak5_login_prueba/app/views/login/shared/_header_logo.html.erb
|
23
35
|
- lib/explorak5_login_prueba/explorak5_login_prueba.rb
|
24
36
|
- lib/explorak5_login_prueba/public/images/images_k5/1-cortar-y-pegar.png
|
25
37
|
- lib/explorak5_login_prueba/public/images/images_k5/1.1 página materias_desglose.png
|
@@ -308,6 +320,7 @@ files:
|
|
308
320
|
- lib/explorak5_login_prueba/public/images/images_k5/trash.png
|
309
321
|
- lib/explorak5_login_prueba/public/images/images_k5/usuario.png
|
310
322
|
- lib/explorak5_login_prueba/public/images/images_k5/videos.png
|
323
|
+
- lib/explorak5_login_prueba/stylesheets/_ic_app_style_layout.scss
|
311
324
|
- lib/explorak5_login_prueba/version.rb
|
312
325
|
homepage: https://github.com/kevin523523/explorak5_login
|
313
326
|
licenses: []
|
/data/lib/explorak5_login_prueba/app/views/{login_page → login/canvas}/_login_content.html.erb
RENAMED
File without changes
|