1<!DOCTYPE html> 2<html> 3 4<head> 5 <title>Portal do Aluno</title> 6 7 <!-- start: Meta --> 8 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 9 10 <meta charset="utf-8"> 11 12 <meta name="description" content="TOTVS Portal - TOTVS Educacional"> 13 <meta name="keywords" content="totvs"> 14 <meta name="author" content="totvs"> 15 <!-- start: Mobile Specific --> 16 <meta name="viewport" content="width=device-width, initial-scale=1"> 17 <!-- end: Mobile Specific --> 18 <!-- end: Meta --> 19 <!-- start: Favicon and Touch Icons --> 20 <link rel="shortcut icon" href="../assets/img/favicon.ico" type="image/x-icon"> 21 <!-- end: Favicon and Touch Icons --> 22 <link rel="stylesheet" href="../../../../js/libs/bootstrap/dist/css/bootstrap.min.css"> 23 <link rel="stylesheet" href="assets/css/animacao.css"> 24 <link rel="stylesheet" href="../../../../js/libs/AngularJS-Toaster/toaster.min.css"> 25 <!-- Custom Stylesheet --> 26 <link rel="stylesheet" href="assets/css/style.css"> 27 <link rel="stylesheet" href="assets/css/customProviders.css"> 28</head> 29 30<body ng-cloak class="align" ng-controller="EduLoginController as controller"> 31 32 <!-- Component TOASTER --> 33 <toaster-container toaster-options="{'time-out':3000, 'close-button': true}"></toaster-container> 34 35 <!-- LOGIN FORM --> 36 <div class="container"> 37 <!-- Modal --> 38 <div class="modal fade" id="modalLogin" tabindex="-1" role="dialog" aria-labelledby="modalLoginLabel"> 39 <div class="modal-dialog modal-md" role="document"> 40 <div class="modal-content"> 41 <div class="modal-header header-login"> 42 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span 43 aria-hidden="true">×</span></button> 44 <h4 class="modal-title" id="modalLoginLabel"> 45 {{ ::'l-vincular-contas' | i18n }} 46 </h4> 47 </div> 48 <div class="modal-body body-login"> 49 <div class="row"> 50 <div class="col-md-12 col-lg-12 col-xs-12 col-sm-12 login"> 51 <div class="form__field"> 52 {{ ::'l-usuario-nao-associado' | i18n }} 53 <br><br> 54 {{ ::'l-fique-tranquilo' | i18n }} 55 </div> 56 <div class="form__field"> 57 <label for="User"> 58 <object data="assets/img/user.svg" width="26px" height="26px" 59 type="image/svg+xml"> 60 <img src="assets/img/user.png" alt="user.svg" /> 61 </object> 62 <span class="hidden">{{ ::'l-usuario' | i18n }}</span> 63 </label> 64 <input id="User2" ng-model="user" type="text" tabindex="5" name="User" 65 class="form__input" placeholder="{{ ::'l-usuario' | i18n }}" required> 66 </div> 67 <div class="form__field"> 68 <label for="Pass"> 69 <object data="assets/img/senha.svg" width="26px" height="26px" 70 type="image/svg+xml"> 71 <img src="assets/img/senha.png" alt="senha.svg" /> 72 </object> 73 <span class="hidden">{{ ::'l-senha' | i18n }}</span> 74 </label> 75 <input id="Pass2" ng-model="pass" type="password" tabindex="6" name="Pass" 76 class="form__input" placeholder="{{ ::'l-senha' | i18n }}" required> 77 </div> 78 <div class="form__field" 79 ng-if="controller.exibirAlias && !controller.exibirFormAlterarSenha"> 80 <label for="Alias"> 81 <object data="assets/img/alias.svg" width="26px" height="26px" 82 type="image/svg+xml"> 83 <img src="assets/img/alias.png" alt="alias.svg" /> 84 </object>
85 <span class="hidden">{{ ::'l-alias' | i18n }}</span> 86 </label> 87 <select id="Alias2" name="Alias" tabindex="7" class="form__input selection" 88 ng-change="controller.aliasSelectChanged()" required 89 ng-options="alias as alias for alias in controller.listaAlias track by alias" 90 ng-model="controller.alias"> 91 </select> 92 </div> 93 </div> 94 </div> 95 <br /> 96 </div> 97 <div class="modal-footer login"> 98 <input type="button" ng-click="controller.onClickAssociarContas()" tabindex="8" 99 value="{{ ::'l-associar-contas' | i18n }}"> 100 </div> 101 </div> 102 </div> 103 </div> 104 105 <!-- LOADING --> 106 <div id="loading-screen" class="overlay" ng-if="pendingRequests > 0"> 107 <img src="../assets/img/loading.gif"> 108 <p class="text-center text-muted">{{ ::'loading' | i18n }}</p> 109 </div> 110 <div class="logo hidden-box"> 111 <img src="assets/img/logo-responsivo.png" alt="marca"> 112 </div> 113 <div class="login-box hidden-box"> 114 <div class="box-header"> 115 <h1>{{ ::'l-portal-aluno' | i18n }}</h1> 116 </div> 117 <form name="controller.formLogin" method="POST" class="form login" 118 ng-attr-action="{{controller.urlLoginPost}}" 119 ng-show="!controller.exibirFormEsqueceuSenha && !controller.exibirFormNovaSenha && !controller.exibirFormAlterarSenha" 120 ng-submit="(submitted=true) && controller.formLogin.$invalid && $event.preventDefault()"> 121 <div class="form__field"> 122 <label for="User"> 123 <object data="assets/img/user.svg" width="26px" height="26px" type="image/svg+xml"> 124 <img src="assets/img/user.png" alt="user.svg" /> 125 </object> 126 <span class="hidden">{{ ::'l-usuario' | i18n }}</span> 127 </label> 128 <input id="User" ng-model="user" type="text" tabindex="1" name="User" class="form__input" 129 placeholder="{{ ::'l-usuario' | i18n }}" required> 130 </div> 131 <div class="form__field"> 132 <label for="Pass"> 133 <object data="assets/img/senha.svg" width="26px" height="26px" type="image/svg+xml"> 134 <img src="assets/img/senha.png" alt="senha.svg" /> 135 </object> 136 <span class="hidden">{{ ::'l-senha' | i18n }}</span> 137 </label> 138 <input id="Pass" ng-model="pass" type="password" tabindex="2" name="Pass" class="form__input" 139 placeholder="{{ ::'l-senha' | i18n }}" required> 140 </div> 141 <div class="form__field" ng-show="controller.exibirAlias"> 142 <label for="Alias"> 143 <object data="assets/img/alias.svg" width="26px" height="26px" type="image/svg+xml"> 144 <img src="assets/img/alias.png" alt="alias.svg" /> 145 </object> 146 <span class="hidden">{{ ::'l-alias' | i18n }}</span> 147 </label> 148 <select id="Alias" name="Alias" tabindex="3" class="form__input selection" 149 ng-change="controller.aliasSelectChanged()" required 150 ng-options="alias as alias for alias in controller.listaAlias track by alias" 151 ng-model="controller.alias"> 152 </select> 153 </div> 154 155 <div class="form__field"> 156 <input type="submit" ng-class="!controller.urlLoginPost ? 'button-disabled': ''" 157 ng-disabled="!controller.urlLoginPost" ng-click="controller.validarDadosLogin()" tabindex="4" 158 value="{{ ::'l-acessar' | i18n }}"> 159 </div> 160 <div ng-if="controller.oauthProviders.length > 0"> 161 <p style="color: white">{{ ::'l-ou-acesse-via-external' | i18n }}</p> 162 <p ng-repeat="provider in controller.oauthProviders">
163 <span ng-if="provider.Type !== 1"> 164 <!--Botão com customização sem background--> 165 <span class="custom-button" ng-click="externalLogin(provider.Id)" 166 ng-style="{{provider._styleStr}}" 167 ng-if="!isNullOrUndefined(provider.CustomizeEntity) && (isNumeral(provider.CustomizeEntity.ImageInBackGround) && provider.CustomizeEntity.ImageInBackGround == 0) || provider.CustomizeEntity.ImageInBackGround == false"> 168 <span class="custom-button-wrapper" 169 ng-if="(isNumeric(provider.CustomizeEntity.TextBeforeImage) && provider.CustomizeEntity.TextBeforeImage == 1) || provider.CustomizeEntity.TextBeforeImage == true"> 170 <span class="custom-button-text" 171 ng-if="isNullOrWhiteSpace(provider.CustomizeEntity.Text) && isNullOrWhiteSpace(provider.ImageBase64)">{{provider.ProviderName}}</span> 172 <span class="custom-button-text" 173 ng-if="!isNullOrWhiteSpace(provider.CustomizeEntity.Text)">{{provider.CustomizeEntity.Text}}</span> 174 <span class="custom-button-icon" ng-if="!isNullOrWhiteSpace(provider.ImageBase64)"> 175 <img ng-src="data:image/png;base64,{{provider.ImageBase64}}" /> 176 </span> 177 </span> 178 <span class="custom-button-wrapper" 179 ng-if="(isNumeric(provider.CustomizeEntity.TextBeforeImage) && provider.CustomizeEntity.TextBeforeImage == 0) || provider.CustomizeEntity.TextBeforeImage == false"> 180 <span class="custom-button-icon" ng-if="!isNullOrWhiteSpace(provider.ImageBase64)"> 181 <img ng-src="data:image/png;base64,{{provider.ImageBase64}}" /> 182 </span> 183 <span class="custom-button-text" 184 ng-if="isNullOrWhiteSpace(provider.CustomizeEntity.Text) && isNullOrWhiteSpace(provider.ImageBase64)">{{provider.ProviderName}}</span> 185 <span class="custom-button-text" 186 ng-if="!isNullOrWhiteSpace(provider.CustomizeEntity.Text)">{{provider.CustomizeEntity.Text}}</span> 187 </span> 188 </span> 189 <!--Botão com customização com background--> 190 <span class="custom-button" ng-click="externalLogin(provider.Id)" 191 ng-style="{{provider._styleStr}}" 192 ng-if="!isNullOrUndefined(provider.CustomizeEntity) && (isNumeral(provider.CustomizeEntity.ImageInBackGround) && provider.CustomizeEntity.ImageInBackGround == 1) || provider.CustomizeEntity.ImageInBackGround == true"> 193 </span> 194 <!--Botão sem customização--> 195 <span class="custom-button" ng-click="externalLogin(provider.Id)" 196 ng-style="{{provider._styleStr}}" ng-if="isNullOrUndefined(provider.CustomizeEntity) "> 197 <span class="custom-button-wrapper"> 198 <span class="custom-button-icon" ng-if="!isNullOrWhiteSpace(provider.ImageBase64)"> 199 <img ng-src="data:image/png;base64,{{provider.ImageBase64}}" /> 200 </span> 201 <span class="custom-button-text">{{provider.ProviderName}}</span> 202 </span> 203 </span> 204 </span> 205 <span ng-if="provider.Type === 1"> 206 <!--Facebook--> 207 <fb:login-button scope="public_profile,email" onlogin="efetuarLoginComFacebookCallback();" 208 max-rows="1" size="large" button-type="login_with" show-faces="false" 209 auto-logout-link="false" use-continue-as="true"> 210 {{ ::'l-botao-acesse-facebook' | i18n }} 211 </fb:login-button> 212 </span> 213 </p> 214 </div> 215 <p class="small"> 216 <a href="#" ng-class="!controller.urlLoginPost ? 'hidden-box': ''" 217 ng-click="controller.exibirEsqueceuSenha(true)" tabindex="5">{{ ::'l-esqueceu-senha' | i18n 218 }}</a> 219 </p> 220 </form> 221 <div class="box-title" ng-if="controller.exibirFormEsqueceuSenha"> 222 <h2>{{ ::'l-esqueceu-senha' | i18n }}</h2> 223 </div> 224 <form name="controller.formRecover" class="form login" ng-if="controller.exibirFormEsqueceuSenha"> 225 <div class="form__field"> 226 <label for="UserRecover"> 227 <object data="assets/img/user.svg" width="26px" height="26px" type="image/svg+xml"> 228 <img src="assets/img/user.png" alt="user.svg" /> 229 </object>
230 <span class="hidden">{{ ::'l-usuario' | i18n }}</span> 231 </label> 232 <input id="UserRecover" ng-model="controller.userRecover" type="text" tabindex="1" 233 name="UserRecover" class="form__input" placeholder="{{ ::'l-usuario' | i18n }}" required> 234 </div> 235 236 <div class="form__field"> 237 <label for="Email"> 238 <object data="assets/img/email.svg" width="26px" height="26px" type="image/svg+xml"> 239 <img src="assets/img/email.png" alt="email.svg" /> 240 </object> 241 <span class="hidden">{{ ::'l-email' | i18n }}</span> 242 </label> 243 <input id="Email" ng-model="controller.emailRecover" type="email" tabindex="1" name="Email" 244 class="form__input" placeholder="{{ ::'l-email' | i18n }}" required> 245 </div> 246 <div class="form__field"> 247 <input type="submit" ng-click="controller.registrarEsqueciSenha()" tabindex="4" 248 value="{{ ::'l-continuar' | i18n }}"> 249 </div> 250 <p class="small"> 251 <a href="#" ng-click="controller.exibirEsqueceuSenha(false)"> 252 {{ 253 ::'l-voltar-realizar-login' | i18n 254 }} 255 </a> 256 </p> 257 </form> 258 <form name="controller.formNewPassword" class="form login" ng-if="controller.exibirFormNovaSenha"> 259 <div class="form__field"> 260 <label for="PassRecover"> 261 <object data="assets/img/senha.svg" width="26px" height="26px" type="image/svg+xml"> 262 <img src="assets/img/senha.png" alt="senha.svg" /> 263 </object> 264 <span class="hidden">{{ ::'l-senha1' | i18n }}</span> 265 </label> 266 <input id="PassRecover" ng-model="controller.novaSenha" type="password" tabindex="2" 267 name="PassRecover" class="form__input" placeholder="{{ ::'l-senha1' | i18n }}" required> 268 </div> 269 <div class="form__field"> 270 <label for="PassRecover2"> 271 <object data="assets/img/senha.svg" width="26px" height="26px" type="image/svg+xml"> 272 <img src="assets/img/senha.png" alt="senha.svg" /> 273 </object> 274 <span class="hidden">{{ ::'l-senha2' | i18n }}</span> 275 </label> 276 <input id="PassRecover2" ng-model="controller.novaSenha2" type="password" tabindex="2" 277 name="PassRecover2" class="form__input" placeholder="{{ ::'l-senha2' | i18n }}" required> 278 </div> 279 <div class="form__field"> 280 <input type="submit" ng-click="controller.registrarNovaSenha()" tabindex="4" 281 value="{{ ::'l-continuar' | i18n }}"> 282 </div> 283 </form> 284 <form name="controller.formAlterarSenha" class="form login" ng-if="controller.exibirFormAlterarSenha"> 285 <div class="form__field"> 286 <label for="usuario"> 287 <object data="assets/img/user.svg" width="26px" height="26px" type="image/svg+xml"> 288 <img src="assets/img/user.png" alt="user.svg" /> 289 </object> 290 <span class="hidden">{{ ::'l-usuario' | i18n }}</span> 291 </label> 292 <input id="usuario" ng-model="controller.usuario" type="text" tabindex="1" name="usuario" 293 class="form__input" placeholder="{{ ::'l-usuario' | i18n }}" required> 294 </div> 295 <div class="form__field"> 296 <label for="OldPass"> 297 <object data="assets/img/senha.svg" width="26px" height="26px" type="image/svg+xml"> 298 <img src="assets/img/senha.png" alt="senha.svg" /> 299 </object>
300 <span class="hidden">{{ ::'l-senha-antiga' | i18n }}</span> 301 </label> 302 <input id="OldPass" ng-model="controller.antigaSenha" type="password" tabindex="2" name="OldPass" 303 class="form__input" placeholder="{{ ::'l-senha-antiga' | i18n }}" required> 304 </div> 305 <div class="form__field"> 306 <label for="PassRecover"> 307 <object data="assets/img/senha.svg" width="26px" height="26px" type="image/svg+xml"> 308 <img src="assets/img/senha.png" alt="senha.svg" /> 309 </object> 310 <span class="hidden">{{ ::'l-senha1' | i18n }}</span> 311 </label> 312 <input id="PassRecover" ng-model="controller.novaSenha" type="password" tabindex="3" 313 name="PassRecover" class="form__input" placeholder="{{ ::'l-senha1' | i18n }}" required> 314 </div> 315 <div class="form__field"> 316 <label for="PassRecover2"> 317 <object data="assets/img/senha.svg" width="26px" height="26px" type="image/svg+xml"> 318 <img src="assets/img/senha.png" alt="senha.svg" /> 319 </object> 320 <span class="hidden">{{ ::'l-senha2' | i18n }}</span> 321 </label> 322 <input id="PassRecover2" ng-model="controller.novaSenha2" type="password" tabindex="4" 323 name="PassRecover2" class="form__input" placeholder="{{ ::'l-senha2' | i18n }}" required> 324 </div> 325 <div class="form__field"> 326 <input type="submit" ng-click="controller.alterarSenha()" tabindex="5" 327 value="{{ ::'btn-save' | i18n }}"> 328 </div> 329 </form> 330 </div> 331 </div> 332 333 <div class="modal fade" id="modalMobileDetect" tabindex="-1" role="dialog" 334 aria-labelledby="mInfoLabelmodalDisciplinas"> 335 <div class="modal-dialog modal-lg" role="document"> 336 <div class="modal-content"> 337 <div class="modal-header"> 338 <h4 class="modal-title text-center" id="mInfoLabelModalDownloadMateriais"> 339 {{ ::'l-dispositivo-mobile' | i18n }} 340 </h4> 341 </div> 342 <div class="modal-body"> 343 <div class="panel-body"> 344 <p>{{ ::'l-msg-mobile-1' | i18n }}</p> 345 <p>{{ ::'l-msg-mobile-2' | i18n }}</p> 346 </div> 347 </div> 348 <div class="modal-footer"> 349 <button type="button" class="btn btn-acessar-mobile" data-backdrop="false" 350 ng-click="controller.redirecionarMobile()"> 351 <span> 352 {{ :: 'l-btn-acessar-versao-mobile' | i18n }} 353 </span> 354 <object data="assets/img/mobile.svg" width="26px" height="26px" type="image/svg+xml"> 355 <img src="assets/img/mobile.png" alt="mobile.svg" /> 356 </object> 357 </button> 358 <button type="button" class="btn btn-continuar-site" data-dismiss="modal" data-backdrop="false"> 359 {{ ::'l-btn-continuar-portal' | i18n }} 360 </button> 361 </div> 362 </div> 363 </div> 364 </div> 365 366
366<script src="https://connect.facebook.net/pt_BR/sdk.js"></script>
366 367
367<script src="../../../../js/libs/jquery-3.6.0/dist/jquery.min.js"></script>
367 368
368<script src="../../../../js/libs/angular-custom/angular.min.js"></script>
368 369
369<script src="../../../../js/libs/angular-ui-select/dist/select.min.js"></script>
369 370
370<script src="../../../../js/libs/angular-resource/angular-resource.js"></script>
370 371
371<script src="../../../../js/libs/angular-i18n/angular-locale_pt-br.js"></script>
371 372
372<script src="../../../../js/libs/angular-sanitize/angular-sanitize.js"></script>
372 373
373<script src="../../../../js/libs/angular-animate/angular-animate.js"></script>
373 374
374<script src="../../../../js/libs/angular-scroll/angular-scroll.min.js"></script>
374 375
375<script src="../../../../js/libs/angular-nestable/src/angular-nestable.js"></script>
375 376 377
377<script src="../../../../js/libs/angular-bootstrap/ui-bootstrap-tpls.js"></script>
377 378
378<script src="../../../../js/libs/bootstrap/dist/js/bootstrap.js"></script>
378 379
379<script src="../../../../js/libs/AngularJS-Toaster/toaster.js"></script>
379 380
380<script src="../../../../js/libs/mobile-detect/mobile-detect.min.js"></script>
380 381 382
382<script src="../../../../js/libs/angular-hotkeys/build/hotkeys.js"></script>
382 383 384
384<script src="../../../../js/libs/ngMask/dist/ngMask.min.js"></script>
384 385 386
386<script src="../../../../js/libs/telerik.kendoui/js/kendo.all.min.js"></script>
386 387
387<script src="../../../../js/libs/totvs-html-framework/totvs-html-framework.min.js"></script>
387 388 389 <!-- Script de configuração global(CONSTANTES) --> 390
390<script src="../../../../js/totvs-app.global.config.js"></script>
390 391 392 <!-- Script de configuração global(CONSTANTES) para o Edu-Portal Educacional --> 393
393<script src="../js/edu-contantes.global.config.js"></script>
393 394 395 <!-- OpenID Connect Client --> 396
396<script src="../../../../js/libs/oidc-client/dist/oidc-client.min.js" data-main="js/main" 397 type="text/javascript"></script>
397 398 399 <!-- Script de Controller Login --> 400
400<script src="login.controller.js"></script>
400
401<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"4db1bb7e2c5c4935a49981db93fa5950","r":1,"spa":2}' crossorigin="anonymous"></script>
401 402</body> 403 404</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.