Merge branch 'dev' into feature/US-19
This commit is contained in:
commit
0890e4c2d4
|
@ -0,0 +1,31 @@
|
||||||
|
# This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node
|
||||||
|
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
|
||||||
|
|
||||||
|
name: Node.js CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ dev ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ dev ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
node-version: [12.x, 14.x, 16.x]
|
||||||
|
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Use Node.js ${{ matrix.node-version }}
|
||||||
|
uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
cache: 'npm'
|
||||||
|
- run: npm ci
|
||||||
|
- run: npm run build --if-present
|
||||||
|
- run: npm test
|
|
@ -66,7 +66,8 @@
|
||||||
"src/main/webapp/content/js/perfect-scrollbar.min.js",
|
"src/main/webapp/content/js/perfect-scrollbar.min.js",
|
||||||
"src/main/webapp/content/js/sweetalert2.js",
|
"src/main/webapp/content/js/sweetalert2.js",
|
||||||
"./node_modules/swiper/swiper-bundle.min.js",
|
"./node_modules/swiper/swiper-bundle.min.js",
|
||||||
"src/main/webapp/content/js/paper-dashboard.js"
|
"src/main/webapp/content/js/paper-dashboard.js",
|
||||||
|
"src/main/webapp/content/js/api-google-platform.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"configurations": {
|
"configurations": {
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
"@ng-bootstrap/ng-bootstrap": "9.1.3",
|
"@ng-bootstrap/ng-bootstrap": "9.1.3",
|
||||||
"@ngx-translate/core": "13.0.0",
|
"@ngx-translate/core": "13.0.0",
|
||||||
"@ngx-translate/http-loader": "6.0.0",
|
"@ngx-translate/http-loader": "6.0.0",
|
||||||
|
"@types/gapi.auth2": "0.0.54",
|
||||||
|
"angularx-social-login": "^4.0.1",
|
||||||
"bootstrap": "4.6.0",
|
"bootstrap": "4.6.0",
|
||||||
"dayjs": "1.10.5",
|
"dayjs": "1.10.5",
|
||||||
"jquery": "^3.6.0",
|
"jquery": "^3.6.0",
|
||||||
|
@ -4250,6 +4252,19 @@
|
||||||
"@types/node": "*"
|
"@types/node": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/gapi": {
|
||||||
|
"version": "0.0.40",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/gapi/-/gapi-0.0.40.tgz",
|
||||||
|
"integrity": "sha512-HzV7JIp5vgCZYPLzTg+LJCEVbTbZ/wNSCatNYThNvDTtiNXU+ccrUfFLUF2akHsil+KCpf2yp9OUhLUflsOuBw=="
|
||||||
|
},
|
||||||
|
"node_modules/@types/gapi.auth2": {
|
||||||
|
"version": "0.0.54",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/gapi.auth2/-/gapi.auth2-0.0.54.tgz",
|
||||||
|
"integrity": "sha512-4HEphaKsGndb9+tnd2PBBmxloaij04iYXVsjgHpFxqbPFt5Le6pasoh5g5BEtwp/YEm9xDbzssp44BYR2/7RcQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/gapi": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/glob": {
|
"node_modules/@types/glob": {
|
||||||
"version": "7.1.3",
|
"version": "7.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz",
|
||||||
|
@ -5129,6 +5144,18 @@
|
||||||
"integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
|
"integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/angularx-social-login": {
|
||||||
|
"version": "4.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/angularx-social-login/-/angularx-social-login-4.0.1.tgz",
|
||||||
|
"integrity": "sha512-dL65y0HXlKd8hhuH70/FFTxWsndEBU5DX2I1x7AcJ1ZAYpU6LPtQMbnzy10eSOcWZNeZX8XzaRaIbc4P+GjmvA==",
|
||||||
|
"dependencies": {
|
||||||
|
"tslib": "^2.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@angular/common": "^12.0.0",
|
||||||
|
"@angular/core": "^12.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/ansi-colors": {
|
"node_modules/ansi-colors": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
|
||||||
|
@ -30379,6 +30406,19 @@
|
||||||
"@types/node": "*"
|
"@types/node": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@types/gapi": {
|
||||||
|
"version": "0.0.40",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/gapi/-/gapi-0.0.40.tgz",
|
||||||
|
"integrity": "sha512-HzV7JIp5vgCZYPLzTg+LJCEVbTbZ/wNSCatNYThNvDTtiNXU+ccrUfFLUF2akHsil+KCpf2yp9OUhLUflsOuBw=="
|
||||||
|
},
|
||||||
|
"@types/gapi.auth2": {
|
||||||
|
"version": "0.0.54",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/gapi.auth2/-/gapi.auth2-0.0.54.tgz",
|
||||||
|
"integrity": "sha512-4HEphaKsGndb9+tnd2PBBmxloaij04iYXVsjgHpFxqbPFt5Le6pasoh5g5BEtwp/YEm9xDbzssp44BYR2/7RcQ==",
|
||||||
|
"requires": {
|
||||||
|
"@types/gapi": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@types/glob": {
|
"@types/glob": {
|
||||||
"version": "7.1.3",
|
"version": "7.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz",
|
||||||
|
@ -31058,6 +31098,14 @@
|
||||||
"integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
|
"integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"angularx-social-login": {
|
||||||
|
"version": "4.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/angularx-social-login/-/angularx-social-login-4.0.1.tgz",
|
||||||
|
"integrity": "sha512-dL65y0HXlKd8hhuH70/FFTxWsndEBU5DX2I1x7AcJ1ZAYpU6LPtQMbnzy10eSOcWZNeZX8XzaRaIbc4P+GjmvA==",
|
||||||
|
"requires": {
|
||||||
|
"tslib": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"ansi-colors": {
|
"ansi-colors": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
|
||||||
|
|
|
@ -80,6 +80,8 @@
|
||||||
"@ng-bootstrap/ng-bootstrap": "9.1.3",
|
"@ng-bootstrap/ng-bootstrap": "9.1.3",
|
||||||
"@ngx-translate/core": "13.0.0",
|
"@ngx-translate/core": "13.0.0",
|
||||||
"@ngx-translate/http-loader": "6.0.0",
|
"@ngx-translate/http-loader": "6.0.0",
|
||||||
|
"@types/gapi.auth2": "0.0.54",
|
||||||
|
"angularx-social-login": "^4.0.1",
|
||||||
"bootstrap": "4.6.0",
|
"bootstrap": "4.6.0",
|
||||||
"dayjs": "1.10.5",
|
"dayjs": "1.10.5",
|
||||||
"jquery": "^3.6.0",
|
"jquery": "^3.6.0",
|
||||||
|
|
|
@ -8,5 +8,6 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
* Properties are configured in the {@code application.yml} file.
|
* Properties are configured in the {@code application.yml} file.
|
||||||
* See {@link tech.jhipster.config.JHipsterProperties} for a good example.
|
* See {@link tech.jhipster.config.JHipsterProperties} for a good example.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ConfigurationProperties(prefix = "application", ignoreUnknownFields = false)
|
@ConfigurationProperties(prefix = "application", ignoreUnknownFields = false)
|
||||||
public class ApplicationProperties {}
|
public class ApplicationProperties {}
|
||||||
|
|
|
@ -92,6 +92,7 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
|
||||||
.antMatchers("/api/account/reset-password/finish").permitAll()
|
.antMatchers("/api/account/reset-password/finish").permitAll()
|
||||||
.antMatchers("/api/admin/**").hasAuthority(AuthoritiesConstants.ADMIN)
|
.antMatchers("/api/admin/**").hasAuthority(AuthoritiesConstants.ADMIN)
|
||||||
.antMatchers("/api/**").authenticated()
|
.antMatchers("/api/**").authenticated()
|
||||||
|
.antMatchers("/api/**").permitAll()
|
||||||
.antMatchers("/websocket/**").authenticated()
|
.antMatchers("/websocket/**").authenticated()
|
||||||
.antMatchers("/management/health").permitAll()
|
.antMatchers("/management/health").permitAll()
|
||||||
.antMatchers("/management/health/**").permitAll()
|
.antMatchers("/management/health/**").permitAll()
|
||||||
|
|
|
@ -156,7 +156,7 @@ public class UserService {
|
||||||
* Modified to register extra user data
|
* Modified to register extra user data
|
||||||
* name, iconoPerfil, fechaNacimiento, estado, pais
|
* name, iconoPerfil, fechaNacimiento, estado, pais
|
||||||
*/
|
*/
|
||||||
public User registerUser(AdminUserDTO userDTO, String password, String name, Integer profileIcon, Integer isAdmin) {
|
public User registerUser(AdminUserDTO userDTO, String password, String name, Integer profileIcon, Integer isAdmin, Integer isGoogle) {
|
||||||
userRepository
|
userRepository
|
||||||
.findOneByLogin(userDTO.getLogin().toLowerCase())
|
.findOneByLogin(userDTO.getLogin().toLowerCase())
|
||||||
.ifPresent(
|
.ifPresent(
|
||||||
|
@ -190,7 +190,13 @@ public class UserService {
|
||||||
newUser.setImageUrl(userDTO.getImageUrl());
|
newUser.setImageUrl(userDTO.getImageUrl());
|
||||||
newUser.setLangKey(userDTO.getLangKey());
|
newUser.setLangKey(userDTO.getLangKey());
|
||||||
// new user is not active
|
// new user is not active
|
||||||
|
|
||||||
|
if (isGoogle == 1) {
|
||||||
|
newUser.setActivated(true);
|
||||||
|
} else {
|
||||||
newUser.setActivated(false);
|
newUser.setActivated(false);
|
||||||
|
}
|
||||||
|
|
||||||
// new user gets registration key
|
// new user gets registration key
|
||||||
newUser.setActivationKey(RandomUtil.generateActivationKey());
|
newUser.setActivationKey(RandomUtil.generateActivationKey());
|
||||||
Set<Authority> authorities = new HashSet<>();
|
Set<Authority> authorities = new HashSet<>();
|
||||||
|
|
|
@ -67,10 +67,14 @@ public class AccountResource {
|
||||||
managedUserVM.getPassword(),
|
managedUserVM.getPassword(),
|
||||||
managedUserVM.getName(),
|
managedUserVM.getName(),
|
||||||
managedUserVM.getProfileIcon(),
|
managedUserVM.getProfileIcon(),
|
||||||
managedUserVM.getIsAdmin()
|
managedUserVM.getIsAdmin(),
|
||||||
|
managedUserVM.getIsGoogle()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (managedUserVM.getIsGoogle() != 1) {
|
||||||
mailService.sendActivationEmail(user);
|
mailService.sendActivationEmail(user);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@code GET /activate} : activate the registered user.
|
* {@code GET /activate} : activate the registered user.
|
||||||
|
|
|
@ -24,6 +24,8 @@ public class ManagedUserVM extends AdminUserDTO {
|
||||||
|
|
||||||
private Integer isAdmin;
|
private Integer isAdmin;
|
||||||
|
|
||||||
|
private Integer isGoogle;
|
||||||
|
|
||||||
public ManagedUserVM() {
|
public ManagedUserVM() {
|
||||||
// Empty constructor needed for Jackson.
|
// Empty constructor needed for Jackson.
|
||||||
}
|
}
|
||||||
|
@ -60,6 +62,14 @@ public class ManagedUserVM extends AdminUserDTO {
|
||||||
this.isAdmin = isAdmin;
|
this.isAdmin = isAdmin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Integer getIsGoogle() {
|
||||||
|
return isGoogle;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIsGoogle(Integer isGoogle) {
|
||||||
|
this.isGoogle = isGoogle;
|
||||||
|
}
|
||||||
|
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
|
|
|
@ -95,7 +95,7 @@ jhipster:
|
||||||
token-validity-in-seconds: 86400
|
token-validity-in-seconds: 86400
|
||||||
token-validity-in-seconds-for-remember-me: 2592000
|
token-validity-in-seconds-for-remember-me: 2592000
|
||||||
mail: # specific JHipster mail property, for standard properties see MailProperties
|
mail: # specific JHipster mail property, for standard properties see MailProperties
|
||||||
base-url: http://127.0.0.1:8080
|
base-url: http://localhost:9000
|
||||||
logging:
|
logging:
|
||||||
use-json-format: false # By default, logs are not in Json format
|
use-json-format: false # By default, logs are not in Json format
|
||||||
logstash: # Forward logs to logstash over a socket, used by LoggingConfiguration
|
logstash: # Forward logs to logstash over a socket, used by LoggingConfiguration
|
||||||
|
|
|
@ -23,6 +23,10 @@
|
||||||
<strong>Registration failed!</strong> Please try again later.
|
<strong>Registration failed!</strong> Please try again later.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="alert alert-danger" *ngIf="errorUserExists" jhiTranslate="register.messages.error.userexists">
|
||||||
|
<strong>Login name already registered!</strong> Please choose another one.
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="alert alert-danger" *ngIf="errorEmailExists" jhiTranslate="register.messages.error.emailexists">
|
<div class="alert alert-danger" *ngIf="errorEmailExists" jhiTranslate="register.messages.error.emailexists">
|
||||||
<strong>Email is already in use!</strong> Please choose another one.
|
<strong>Email is already in use!</strong> Please choose another one.
|
||||||
</div>
|
</div>
|
||||||
|
@ -34,7 +38,7 @@
|
||||||
<form
|
<form
|
||||||
name="form"
|
name="form"
|
||||||
role="form"
|
role="form"
|
||||||
class="form"
|
class="ds-form"
|
||||||
(ngSubmit)="register()"
|
(ngSubmit)="register()"
|
||||||
[formGroup]="registerForm"
|
[formGroup]="registerForm"
|
||||||
*ngIf="!success"
|
*ngIf="!success"
|
||||||
|
@ -42,7 +46,7 @@
|
||||||
>
|
>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="name" class="form-label">Nombre</label>
|
<label for="name" class="form-label">Nombre completo</label>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
|
@ -136,13 +140,17 @@
|
||||||
>
|
>
|
||||||
Your email cannot be longer than 100 characters.
|
Your email cannot be longer than 100 characters.
|
||||||
</small>
|
</small>
|
||||||
|
|
||||||
|
<small class="form-text text-danger" *ngIf="registerForm.get('email')?.errors?.email">
|
||||||
|
Se requiere un correo electrónico válido.
|
||||||
|
</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="password" jhiTranslate="global.form.newpassword.label">Password</label>
|
<label for="password">Nueva contraseña</label>
|
||||||
<input
|
<input
|
||||||
type="password"
|
type="password"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
|
@ -188,7 +196,7 @@
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="password" jhiTranslate="global.form.newpassword.label">Password</label>
|
<label for="password">Repetir nueva contraseña</label>
|
||||||
<input
|
<input
|
||||||
type="password"
|
type="password"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
|
@ -243,7 +251,7 @@
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
[disabled]="registerForm.invalid"
|
[disabled]="registerForm.invalid"
|
||||||
class="btn btn-primary w-100"
|
class="ds-btn ds-btn--primary w-100"
|
||||||
jhiTranslate="register.form.button"
|
jhiTranslate="register.form.button"
|
||||||
data-cy="submit"
|
data-cy="submit"
|
||||||
>
|
>
|
||||||
|
|
|
@ -65,6 +65,7 @@ describe('Component Tests', () => {
|
||||||
name: '',
|
name: '',
|
||||||
profileIcon: 1,
|
profileIcon: 1,
|
||||||
isAdmin: 0,
|
isAdmin: 0,
|
||||||
|
isGoogle: 0,
|
||||||
});
|
});
|
||||||
expect(comp.success).toBe(true);
|
expect(comp.success).toBe(true);
|
||||||
expect(comp.errorUserExists).toBe(false);
|
expect(comp.errorUserExists).toBe(false);
|
||||||
|
|
|
@ -59,8 +59,8 @@ export class RegisterComponent implements AfterViewInit {
|
||||||
registerForm = this.fb.group({
|
registerForm = this.fb.group({
|
||||||
name: ['', [Validators.required, Validators.minLength(2), Validators.maxLength(254)]],
|
name: ['', [Validators.required, Validators.minLength(2), Validators.maxLength(254)]],
|
||||||
email: ['', [Validators.required, Validators.minLength(5), Validators.maxLength(254), Validators.email]],
|
email: ['', [Validators.required, Validators.minLength(5), Validators.maxLength(254), Validators.email]],
|
||||||
password: ['', [Validators.required, Validators.minLength(4), Validators.maxLength(50)]],
|
password: ['', [Validators.required, Validators.minLength(8), Validators.maxLength(50)]],
|
||||||
confirmPassword: ['', [Validators.required, Validators.minLength(4), Validators.maxLength(50)]],
|
confirmPassword: ['', [Validators.required, Validators.minLength(8), Validators.maxLength(50)]],
|
||||||
});
|
});
|
||||||
|
|
||||||
constructor(private translateService: TranslateService, private registerService: RegisterService, private fb: FormBuilder) {}
|
constructor(private translateService: TranslateService, private registerService: RegisterService, private fb: FormBuilder) {}
|
||||||
|
@ -84,7 +84,6 @@ export class RegisterComponent implements AfterViewInit {
|
||||||
const login = this.registerForm.get(['email'])!.value;
|
const login = this.registerForm.get(['email'])!.value;
|
||||||
const email = this.registerForm.get(['email'])!.value;
|
const email = this.registerForm.get(['email'])!.value;
|
||||||
const name = this.registerForm.get(['name'])!.value;
|
const name = this.registerForm.get(['name'])!.value;
|
||||||
console.log(name);
|
|
||||||
|
|
||||||
this.registerService
|
this.registerService
|
||||||
.save({
|
.save({
|
||||||
|
@ -95,6 +94,7 @@ export class RegisterComponent implements AfterViewInit {
|
||||||
name,
|
name,
|
||||||
profileIcon: this.profileIcon,
|
profileIcon: this.profileIcon,
|
||||||
isAdmin: 0,
|
isAdmin: 0,
|
||||||
|
isGoogle: 0,
|
||||||
})
|
})
|
||||||
.subscribe(
|
.subscribe(
|
||||||
() => (this.success = true),
|
() => (this.success = true),
|
||||||
|
@ -103,7 +103,7 @@ export class RegisterComponent implements AfterViewInit {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private processError(response: HttpErrorResponse): void {
|
processError(response: HttpErrorResponse): void {
|
||||||
if (response.status === 400 && response.error.type === LOGIN_ALREADY_USED_TYPE) {
|
if (response.status === 400 && response.error.type === LOGIN_ALREADY_USED_TYPE) {
|
||||||
this.errorUserExists = true;
|
this.errorUserExists = true;
|
||||||
} else if (response.status === 400 && response.error.type === EMAIL_ALREADY_USED_TYPE) {
|
} else if (response.status === 400 && response.error.type === EMAIL_ALREADY_USED_TYPE) {
|
||||||
|
|
|
@ -6,6 +6,7 @@ export class Registration {
|
||||||
public langKey: string,
|
public langKey: string,
|
||||||
public name: string,
|
public name: string,
|
||||||
public profileIcon: number,
|
public profileIcon: number,
|
||||||
public isAdmin: number
|
public isAdmin: number,
|
||||||
|
public isGoogle: number
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -179,7 +179,6 @@ export class SettingsComponent implements OnInit {
|
||||||
icon.class = 'active';
|
icon.class = 'active';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
console.log(this.profileIcons);
|
|
||||||
|
|
||||||
this.usersSharedCollection = this.userService.addUserToCollectionIfMissing(this.usersSharedCollection, usuarioExtra.user);
|
this.usersSharedCollection = this.userService.addUserToCollectionIfMissing(this.usersSharedCollection, usuarioExtra.user);
|
||||||
this.plantillasSharedCollection = this.plantillaService.addPlantillaToCollectionIfMissing(
|
this.plantillasSharedCollection = this.plantillaService.addPlantillaToCollectionIfMissing(
|
||||||
|
|
|
@ -17,6 +17,10 @@ import { SharedModule } from 'app/shared/shared.module';
|
||||||
import { AppRoutingModule } from './app-routing.module';
|
import { AppRoutingModule } from './app-routing.module';
|
||||||
import { HomeModule } from './home/home.module';
|
import { HomeModule } from './home/home.module';
|
||||||
import { EntityRoutingModule } from './entities/entity-routing.module';
|
import { EntityRoutingModule } from './entities/entity-routing.module';
|
||||||
|
import { ReactiveFormsModule } from '@angular/forms';
|
||||||
|
|
||||||
|
import { SocialLoginModule, SocialAuthServiceConfig } from 'angularx-social-login';
|
||||||
|
import { GoogleLoginProvider } from 'angularx-social-login';
|
||||||
// jhipster-needle-angular-add-module-import JHipster will add new module here
|
// jhipster-needle-angular-add-module-import JHipster will add new module here
|
||||||
import { NgbDateDayjsAdapter } from './config/datepicker-adapter';
|
import { NgbDateDayjsAdapter } from './config/datepicker-adapter';
|
||||||
import { fontAwesomeIcons } from './config/font-awesome-icons';
|
import { fontAwesomeIcons } from './config/font-awesome-icons';
|
||||||
|
@ -37,6 +41,7 @@ import { SidebarComponent } from './layouts/sidebar/sidebar.component';
|
||||||
// jhipster-needle-angular-add-module JHipster will add new module here
|
// jhipster-needle-angular-add-module JHipster will add new module here
|
||||||
EntityRoutingModule,
|
EntityRoutingModule,
|
||||||
AppRoutingModule,
|
AppRoutingModule,
|
||||||
|
SocialLoginModule,
|
||||||
// Set this to true to enable service worker (PWA)
|
// Set this to true to enable service worker (PWA)
|
||||||
ServiceWorkerModule.register('ngsw-worker.js', { enabled: false }),
|
ServiceWorkerModule.register('ngsw-worker.js', { enabled: false }),
|
||||||
HttpClientModule,
|
HttpClientModule,
|
||||||
|
@ -58,6 +63,18 @@ import { SidebarComponent } from './layouts/sidebar/sidebar.component';
|
||||||
{ provide: LOCALE_ID, useValue: 'es' },
|
{ provide: LOCALE_ID, useValue: 'es' },
|
||||||
{ provide: NgbDateAdapter, useClass: NgbDateDayjsAdapter },
|
{ provide: NgbDateAdapter, useClass: NgbDateDayjsAdapter },
|
||||||
httpInterceptorProviders,
|
httpInterceptorProviders,
|
||||||
|
{
|
||||||
|
provide: 'SocialAuthServiceConfig',
|
||||||
|
useValue: {
|
||||||
|
autoLogin: false,
|
||||||
|
providers: [
|
||||||
|
{
|
||||||
|
id: GoogleLoginProvider.PROVIDER_ID,
|
||||||
|
provider: new GoogleLoginProvider('178178891217-b517thad8f15d4at2vk2410v7a09dcvt.apps.googleusercontent.com'),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
} as SocialAuthServiceConfig,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
declarations: [MainComponent, NavbarComponent, ErrorComponent, PageRibbonComponent, FooterComponent, SidebarComponent],
|
declarations: [MainComponent, NavbarComponent, ErrorComponent, PageRibbonComponent, FooterComponent, SidebarComponent],
|
||||||
bootstrap: [MainComponent],
|
bootstrap: [MainComponent],
|
||||||
|
|
|
@ -36,6 +36,7 @@ export class AuthServerProvider {
|
||||||
return new Observable(observer => {
|
return new Observable(observer => {
|
||||||
this.localStorageService.clear('authenticationToken');
|
this.localStorageService.clear('authenticationToken');
|
||||||
this.sessionStorageService.clear('authenticationToken');
|
this.sessionStorageService.clear('authenticationToken');
|
||||||
|
this.localStorageService.clear('IsGoogle');
|
||||||
observer.complete();
|
observer.complete();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<form *ngIf="categoria" name="deleteForm" (ngSubmit)="confirmDelete(categoria.id!)">
|
<form class="ds-form" *ngIf="categoria" name="deleteForm" (ngSubmit)="confirmDelete(categoria.id!)">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h4 class="modal-title" data-cy="categoriaDeleteDialogHeading" jhiTranslate="entity.delete.title">Confirm delete operation</h4>
|
<h4 class="modal-title" data-cy="categoriaDeleteDialogHeading" jhiTranslate="entity.delete.title">Confirm delete operation</h4>
|
||||||
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true" (click)="cancel()">×</button>
|
<button type="button" class="ds-btn close" data-dismiss="modal" aria-hidden="true" (click)="cancel()">×</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
|
@ -14,11 +14,11 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-secondary" data-dismiss="modal" (click)="cancel()">
|
<button type="button" class="btn btn-secondary ds-btn ds-btn-secondary" data-dismiss="modal" (click)="cancel()">
|
||||||
<fa-icon icon="ban"></fa-icon> <span jhiTranslate="entity.action.cancel">Cancel</span>
|
<fa-icon icon="ban"></fa-icon> <span jhiTranslate="entity.action.cancel">Cancel</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button id="jhi-confirm-delete-categoria" data-cy="entityConfirmDeleteButton" type="submit" class="btn btn-danger">
|
<button id="jhi-confirm-delete-categoria" data-cy="entityConfirmDeleteButton" type="submit" class="btn btn-danger ds-btn ds-btn-danger">
|
||||||
<fa-icon icon="times"></fa-icon> <span jhiTranslate="entity.action.delete">Delete</span>
|
<fa-icon icon="times"></fa-icon> <span jhiTranslate="entity.action.delete">Delete</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -24,11 +24,11 @@
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<button type="submit" (click)="previousState()" class="btn btn-info" data-cy="entityDetailsBackButton">
|
<button type="submit" (click)="previousState()" class="btn btn-ds btn-info" data-cy="entityDetailsBackButton">
|
||||||
<fa-icon icon="arrow-left"></fa-icon> <span jhiTranslate="entity.action.back">Back</span>
|
<fa-icon icon="arrow-left"></fa-icon> <span jhiTranslate="entity.action.back">Back</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button type="button" [routerLink]="['/categoria', categoria.id, 'edit']" class="btn btn-primary">
|
<button type="button" [routerLink]="['/categoria', categoria.id, 'edit']" class="btn btn-ds btn-ds-primary btn-primary">
|
||||||
<fa-icon icon="pencil-alt"></fa-icon> <span jhiTranslate="entity.action.edit">Edit</span>
|
<fa-icon icon="pencil-alt"></fa-icon> <span jhiTranslate="entity.action.edit">Edit</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,15 +3,10 @@
|
||||||
<span jhiTranslate="dataSurveyApp.categoria.home.title">Categorias</span>
|
<span jhiTranslate="dataSurveyApp.categoria.home.title">Categorias</span>
|
||||||
|
|
||||||
<div class="d-flex justify-content-end">
|
<div class="d-flex justify-content-end">
|
||||||
<button class="btn btn-info mr-2" (click)="loadAll()" [disabled]="isLoading">
|
|
||||||
<fa-icon icon="sync" [spin]="isLoading"></fa-icon>
|
|
||||||
<span jhiTranslate="dataSurveyApp.categoria.home.refreshListLabel">Refresh List</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<button
|
<button
|
||||||
id="jh-create-entity"
|
id="jh-create-entity"
|
||||||
data-cy="entityCreateButton"
|
data-cy="entityCreateButton"
|
||||||
class="btn btn-primary jh-create-entity create-categoria"
|
class="jh-create-entity create-categoria ds-btn ds-btn--primary"
|
||||||
[routerLink]="['/categoria/new']"
|
[routerLink]="['/categoria/new']"
|
||||||
>
|
>
|
||||||
<fa-icon icon="plus"></fa-icon>
|
<fa-icon icon="plus"></fa-icon>
|
||||||
|
@ -29,45 +24,37 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="table-responsive" id="entities" *ngIf="categorias && categorias.length > 0">
|
<div class="table-responsive" id="entities" *ngIf="categorias && categorias.length > 0">
|
||||||
|
<form class="ds-form">
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-addon"><i class="glyphicon glyphicon-search"></i></div>
|
||||||
|
<input type="text" name="searchString" placeholder="Buscar..." [(ngModel)]="searchString" />
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
<table class="table table-striped" aria-describedby="page-heading">
|
<table class="table table-striped" aria-describedby="page-heading">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col"><span jhiTranslate="global.field.id">ID</span></th>
|
|
||||||
<th scope="col"><span jhiTranslate="dataSurveyApp.categoria.nombre">Nombre</span></th>
|
<th scope="col"><span jhiTranslate="dataSurveyApp.categoria.nombre">Nombre</span></th>
|
||||||
<th scope="col"><span jhiTranslate="dataSurveyApp.categoria.estado">Estado</span></th>
|
<th scope="col"><span jhiTranslate="dataSurveyApp.categoria.estado">Estado</span></th>
|
||||||
<th scope="col"></th>
|
<th scope="col"></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let categoria of categorias; trackBy: trackId" data-cy="entityTable">
|
<tr *ngFor="let categoria of categorias | filter: 'nombre':searchString; trackBy: trackId" data-cy="entityTable">
|
||||||
<td>
|
|
||||||
<a [routerLink]="['/categoria', categoria.id, 'view']">{{ categoria.id }}</a>
|
|
||||||
</td>
|
|
||||||
<td>{{ categoria.nombre }}</td>
|
<td>{{ categoria.nombre }}</td>
|
||||||
<td jhiTranslate="{{ 'dataSurveyApp.EstadoCategoria.' + categoria.estado }}">{{ categoria.estado }}</td>
|
<td jhiTranslate="{{ 'dataSurveyApp.EstadoCategoria.' + categoria.estado }}">{{ categoria.estado }}</td>
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<button
|
|
||||||
type="submit"
|
|
||||||
[routerLink]="['/categoria', categoria.id, 'view']"
|
|
||||||
class="btn btn-info btn-sm"
|
|
||||||
data-cy="entityDetailsButton"
|
|
||||||
>
|
|
||||||
<fa-icon icon="eye"></fa-icon>
|
|
||||||
<span class="d-none d-md-inline" jhiTranslate="entity.action.view">View</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
[routerLink]="['/categoria', categoria.id, 'edit']"
|
[routerLink]="['/categoria', categoria.id, 'edit']"
|
||||||
class="btn btn-primary btn-sm"
|
class="btn-sm ds-btn ds-btn--primary"
|
||||||
data-cy="entityEditButton"
|
data-cy="entityEditButton"
|
||||||
>
|
>
|
||||||
<fa-icon icon="pencil-alt"></fa-icon>
|
<fa-icon icon="pencil-alt"></fa-icon>
|
||||||
<span class="d-none d-md-inline" jhiTranslate="entity.action.edit">Edit</span>
|
<span class="d-none d-md-inline" jhiTranslate="entity.action.edit">Edit</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button type="submit" (click)="delete(categoria)" class="btn btn-danger btn-sm" data-cy="entityDeleteButton">
|
<button type="submit" (click)="delete(categoria)" class="btn-sm ds-btn ds-btn--danger" data-cy="entityDeleteButton">
|
||||||
<fa-icon icon="times"></fa-icon>
|
<fa-icon icon="times"></fa-icon>
|
||||||
<span class="d-none d-md-inline" jhiTranslate="entity.action.delete">Delete</span>
|
<span class="d-none d-md-inline" jhiTranslate="entity.action.delete">Delete</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -13,8 +13,11 @@ import { CategoriaDeleteDialogComponent } from '../delete/categoria-delete-dialo
|
||||||
export class CategoriaComponent implements OnInit {
|
export class CategoriaComponent implements OnInit {
|
||||||
categorias?: ICategoria[];
|
categorias?: ICategoria[];
|
||||||
isLoading = false;
|
isLoading = false;
|
||||||
|
public searchString: string;
|
||||||
|
|
||||||
constructor(protected categoriaService: CategoriaService, protected modalService: NgbModal) {}
|
constructor(protected categoriaService: CategoriaService, protected modalService: NgbModal) {
|
||||||
|
this.searchString = '';
|
||||||
|
}
|
||||||
|
|
||||||
loadAll(): void {
|
loadAll(): void {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
|
@ -31,6 +34,7 @@ export class CategoriaComponent implements OnInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
|
this.searchString = '';
|
||||||
this.loadAll();
|
this.loadAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-8">
|
<div class="col-8">
|
||||||
<form name="editForm" role="form" novalidate (ngSubmit)="save()" [formGroup]="editForm">
|
<form name="editForm" role="form" novalidate (ngSubmit)="save()" [formGroup]="editForm" class="ds-form">
|
||||||
<h2 id="jhi-categoria-heading" data-cy="CategoriaCreateUpdateHeading" jhiTranslate="dataSurveyApp.categoria.home.createOrEditLabel">
|
<h2 id="jhi-categoria-heading" data-cy="CategoriaCreateUpdateHeading" jhiTranslate="dataSurveyApp.categoria.home.createOrEditLabel">
|
||||||
Create or edit a Categoria
|
Create or edit a Category
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<jhi-alert-error></jhi-alert-error>
|
<jhi-alert-error></jhi-alert-error>
|
||||||
|
<div class="alert alert-danger" *ngIf="duplicateName" jhiTranslate="dataSurveyApp.categoria.errors.duplicateName">
|
||||||
|
A category with that name already exists.
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="form-group" [hidden]="editForm.get('id')!.value == null">
|
<div class="form-group" [hidden]="editForm.get('id')!.value == null">
|
||||||
<label class="form-control-label" jhiTranslate="global.field.id" for="field_id">ID</label>
|
<label class="form-control-label" jhiTranslate="global.field.id" for="field_id">ID</label>
|
||||||
|
@ -39,7 +42,13 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<button type="button" id="cancel-save" data-cy="entityCreateCancelButton" class="btn btn-secondary" (click)="previousState()">
|
<button
|
||||||
|
type="button"
|
||||||
|
id="cancel-save"
|
||||||
|
data-cy="entityCreateCancelButton"
|
||||||
|
class="btn btn-secondary ds-btn ds-btn-secondary"
|
||||||
|
(click)="previousState()"
|
||||||
|
>
|
||||||
<fa-icon icon="ban"></fa-icon> <span jhiTranslate="entity.action.cancel">Cancel</span>
|
<fa-icon icon="ban"></fa-icon> <span jhiTranslate="entity.action.cancel">Cancel</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
@ -48,7 +57,7 @@
|
||||||
id="save-entity"
|
id="save-entity"
|
||||||
data-cy="entityCreateSaveButton"
|
data-cy="entityCreateSaveButton"
|
||||||
[disabled]="editForm.invalid || isSaving"
|
[disabled]="editForm.invalid || isSaving"
|
||||||
class="btn btn-primary"
|
class="btn btn-primary ds-btn ds-btn-primary"
|
||||||
>
|
>
|
||||||
<fa-icon icon="save"></fa-icon> <span jhiTranslate="entity.action.save">Save</span>
|
<fa-icon icon="save"></fa-icon> <span jhiTranslate="entity.action.save">Save</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -14,19 +14,32 @@ import { CategoriaService } from '../service/categoria.service';
|
||||||
})
|
})
|
||||||
export class CategoriaUpdateComponent implements OnInit {
|
export class CategoriaUpdateComponent implements OnInit {
|
||||||
isSaving = false;
|
isSaving = false;
|
||||||
|
public categorias?: ICategoria[];
|
||||||
|
|
||||||
editForm = this.fb.group({
|
editForm = this.fb.group({
|
||||||
id: [],
|
id: [],
|
||||||
nombre: [null, [Validators.required]],
|
nombre: [null, [Validators.required]],
|
||||||
estado: [null, [Validators.required]],
|
estado: [null, [Validators.required]],
|
||||||
});
|
});
|
||||||
|
public duplicateName: boolean;
|
||||||
|
|
||||||
constructor(protected categoriaService: CategoriaService, protected activatedRoute: ActivatedRoute, protected fb: FormBuilder) {}
|
constructor(protected categoriaService: CategoriaService, protected activatedRoute: ActivatedRoute, protected fb: FormBuilder) {
|
||||||
|
this.duplicateName = false;
|
||||||
|
this.categorias = [];
|
||||||
|
this.loadAll();
|
||||||
|
}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
this.activatedRoute.data.subscribe(({ categoria }) => {
|
this.activatedRoute.data.subscribe(({ categoria }) => {
|
||||||
this.updateForm(categoria);
|
this.updateForm(categoria);
|
||||||
});
|
});
|
||||||
|
this.loadAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
loadAll(): void {
|
||||||
|
this.categoriaService.query().subscribe(res => {
|
||||||
|
this.categorias = res.body ?? [];
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
previousState(): void {
|
previousState(): void {
|
||||||
|
@ -36,11 +49,23 @@ export class CategoriaUpdateComponent implements OnInit {
|
||||||
save(): void {
|
save(): void {
|
||||||
this.isSaving = true;
|
this.isSaving = true;
|
||||||
const categoria = this.createFromForm();
|
const categoria = this.createFromForm();
|
||||||
|
const condicion = this.categoryExists(categoria);
|
||||||
|
if (!condicion) {
|
||||||
if (categoria.id !== undefined) {
|
if (categoria.id !== undefined) {
|
||||||
this.subscribeToSaveResponse(this.categoriaService.update(categoria));
|
this.subscribeToSaveResponse(this.categoriaService.update(categoria));
|
||||||
} else {
|
} else {
|
||||||
this.subscribeToSaveResponse(this.categoriaService.create(categoria));
|
this.subscribeToSaveResponse(this.categoriaService.create(categoria));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
this.duplicateName = true;
|
||||||
|
this.isSaving = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected categoryExists(categoria: ICategoria): boolean {
|
||||||
|
this.loadAll();
|
||||||
|
var condicion = this.categorias!.some(cat => cat.nombre!.toLowerCase() === categoria.nombre!.toLowerCase());
|
||||||
|
return condicion;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected subscribeToSaveResponse(result: Observable<HttpResponse<ICategoria>>): void {
|
protected subscribeToSaveResponse(result: Observable<HttpResponse<ICategoria>>): void {
|
||||||
|
|
|
@ -1,21 +1,11 @@
|
||||||
<div>
|
<div>
|
||||||
<h2 id="page-heading" data-cy="UsuarioExtraHeading">
|
<h2 id="page-heading" data-cy="UsuarioExtraHeading">
|
||||||
<span jhiTranslate="dataSurveyApp.usuarioExtra.home.title">Usuario Extras</span>
|
<span jhiTranslate="dataSurveyApp.usuarioExtra.home.title">Usuarios</span>
|
||||||
|
|
||||||
<div class="d-flex justify-content-end">
|
<div class="d-flex justify-content-end">
|
||||||
<button class="btn btn-info mr-2" (click)="loadAll()" [disabled]="isLoading">
|
<button id="jh-create-entity" data-cy="entityCreateButton" class="ds-btn ds-btn--primary" [routerLink]="['/usuario-extra/new']">
|
||||||
<fa-icon icon="sync" [spin]="isLoading"></fa-icon>
|
|
||||||
<span jhiTranslate="dataSurveyApp.usuarioExtra.home.refreshListLabel">Refresh List</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="jh-create-entity"
|
|
||||||
data-cy="entityCreateButton"
|
|
||||||
class="btn btn-primary jh-create-entity create-usuario-extra"
|
|
||||||
[routerLink]="['/usuario-extra/new']"
|
|
||||||
>
|
|
||||||
<fa-icon icon="plus"></fa-icon>
|
<fa-icon icon="plus"></fa-icon>
|
||||||
<span jhiTranslate="dataSurveyApp.usuarioExtra.home.createLabel"> Create a new Usuario Extra </span>
|
<span jhiTranslate="dataSurveyApp.usuarioExtra.home.createLabel"> Create a new administrador </span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</h2>
|
</h2>
|
||||||
|
@ -32,10 +22,10 @@
|
||||||
<table class="table table-striped" aria-describedby="page-heading">
|
<table class="table table-striped" aria-describedby="page-heading">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col"><span>Rol</span></th>
|
<th scope="col"><span jhiTranslate="dataSurveyApp.usuarioExtra.rol">Rol</span></th>
|
||||||
<th scope="col"><span jhiTranslate="dataSurveyApp.usuarioExtra.iconoPerfil">Icono Perfil</span></th>
|
<th scope="col"><span jhiTranslate="dataSurveyApp.usuarioExtra.iconoPerfil">Icono</span></th>
|
||||||
<th scope="col"><span jhiTranslate="dataSurveyApp.usuarioExtra.nombre">Nombre Usuario</span></th>
|
<th scope="col"><span jhiTranslate="dataSurveyApp.usuarioExtra.nombre">Nombre Usuario</span></th>
|
||||||
<th scope="col"><span>Correo electrónico</span></th>
|
<th scope="col"><span jhiTranslate="dataSurveyApp.usuarioExtra.correo">Correo electrónico</span></th>
|
||||||
<th scope="col"><span jhiTranslate="dataSurveyApp.usuarioExtra.estado">Estado</span></th>
|
<th scope="col"><span jhiTranslate="dataSurveyApp.usuarioExtra.estado">Estado</span></th>
|
||||||
<!--<th scope="col"><span jhiTranslate="dataSurveyApp.usuarioExtra.plantilla">Plantilla</span></th>-->
|
<!--<th scope="col"><span jhiTranslate="dataSurveyApp.usuarioExtra.plantilla">Plantilla</span></th>-->
|
||||||
<th scope="col"></th>
|
<th scope="col"></th>
|
||||||
|
@ -62,19 +52,19 @@
|
||||||
>{{ last ? '' : ', ' }}
|
>{{ last ? '' : ', ' }}
|
||||||
</span>
|
</span>
|
||||||
</td>-->
|
</td>-->
|
||||||
<td class="text-right">
|
<td class="text-center">
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
[routerLink]="['/usuario-extra', usuarioExtra.id, 'view']"
|
[routerLink]="['/usuario-extra', usuarioExtra.id, 'view']"
|
||||||
class="btn btn-info btn-sm"
|
class="ds-btn ds-btn--primary btn-sm"
|
||||||
data-cy="entityDetailsButton"
|
data-cy="entityDetailsButton"
|
||||||
>
|
>
|
||||||
<fa-icon icon="eye"></fa-icon>
|
<fa-icon icon="eye"></fa-icon>
|
||||||
<span class="d-none d-md-inline" jhiTranslate="entity.action.view">View</span>
|
<span class="d-none d-md-inline" jhiTranslate="entity.action.view">View</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button type="submit" (click)="delete(usuarioExtra)" class="btn btn-danger btn-sm" data-cy="entityDeleteButton">
|
<button type="submit" (click)="delete(usuarioExtra)" class="ds-btn ds-btn--danger btn-sm" data-cy="entityDeleteButton">
|
||||||
<fa-icon icon="times"></fa-icon>
|
<fa-icon icon="times"></fa-icon>
|
||||||
<span class="d-none d-md-inline" jhiTranslate="entity.action.delete">Delete</span>
|
<span class="d-none d-md-inline" jhiTranslate="entity.action.delete">Delete</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -10,3 +10,7 @@
|
||||||
list-style: none;
|
list-style: none;
|
||||||
padding-left: 10px;
|
padding-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btn-group button {
|
||||||
|
margin: 0 2px;
|
||||||
|
}
|
||||||
|
|
|
@ -30,9 +30,9 @@ export class UsuarioExtraComponent implements OnInit {
|
||||||
rolList = user.authorities;
|
rolList = user.authorities;
|
||||||
let a = rolList?.pop();
|
let a = rolList?.pop();
|
||||||
if (a == 'ROLE_ADMIN') {
|
if (a == 'ROLE_ADMIN') {
|
||||||
user.authorities = ['ADMIN'];
|
user.authorities = ['Admin'];
|
||||||
} else if (a == 'ROLE_USER') {
|
} else if (a == 'ROLE_USER') {
|
||||||
user.authorities = ['USUARIO'];
|
user.authorities = ['Usuario'];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.publicUsers = res;
|
this.publicUsers = res;
|
||||||
|
|
|
@ -9,12 +9,12 @@
|
||||||
<div class="card-body p-4">
|
<div class="card-body p-4">
|
||||||
<div class="text-center w-75 m-auto">
|
<div class="text-center w-75 m-auto">
|
||||||
<h4 class="text-dark-50 text-center pb-0 fw-bold p-0 m-0" style="color: #727070; font-weight: 700; font-size: 1.3rem">
|
<h4 class="text-dark-50 text-center pb-0 fw-bold p-0 m-0" style="color: #727070; font-weight: 700; font-size: 1.3rem">
|
||||||
REGISTRAR ADMIN
|
REGISTRAR ADMINISTRADOR
|
||||||
</h4>
|
</h4>
|
||||||
<p class="mb-4" style="color: rgba(146, 146, 146, 0.664)">Ingrese los datos para registrar a un admin.</p>
|
<p class="mb-4" style="color: rgba(146, 146, 146, 0.664)">Ingrese los datos para registrar a un admin.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="alert alert-success" *ngIf="success" jhiTranslate="register.messages.adminsuccess">
|
<div class="alert alert-success" *ngIf="success" jhiTranslate="register.messages.success">
|
||||||
<strong>Registration saved!</strong> Please check your email for confirmation.
|
<strong>Registration saved!</strong> Please check your email for confirmation.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -22,6 +22,10 @@
|
||||||
<strong>Registration failed!</strong> Please try again later.
|
<strong>Registration failed!</strong> Please try again later.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="alert alert-danger" *ngIf="errorUserExists" jhiTranslate="register.messages.error.userexists">
|
||||||
|
<strong>Login name already registered!</strong> Please choose another one.
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="alert alert-danger" *ngIf="errorEmailExists" jhiTranslate="register.messages.error.emailexists">
|
<div class="alert alert-danger" *ngIf="errorEmailExists" jhiTranslate="register.messages.error.emailexists">
|
||||||
<strong>Email is already in use!</strong> Please choose another one.
|
<strong>Email is already in use!</strong> Please choose another one.
|
||||||
</div>
|
</div>
|
||||||
|
@ -30,16 +34,24 @@
|
||||||
The password and its confirmation do not match!
|
The password and its confirmation do not match!
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form name="form" role="form" class="form" (ngSubmit)="register()" [formGroup]="registerForm" *ngIf="!success" autocomplete="off">
|
<form
|
||||||
|
name="form"
|
||||||
|
role="form"
|
||||||
|
class="ds-form"
|
||||||
|
(ngSubmit)="register()"
|
||||||
|
[formGroup]="registerForm"
|
||||||
|
*ngIf="!success"
|
||||||
|
autocomplete="off"
|
||||||
|
>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="name" class="form-label">Nombre</label>
|
<label for="name" class="form-label">Nombre completo</label>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
id="name"
|
id="name"
|
||||||
name="name"
|
name="name"
|
||||||
placeholder="{{ 'global.form.name.placeholder' | translate }}"
|
placeholder="Nombre completo"
|
||||||
formControlName="name"
|
formControlName="name"
|
||||||
data-cy="name"
|
data-cy="name"
|
||||||
/>
|
/>
|
||||||
|
@ -82,13 +94,13 @@
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="emailaddress" class="form-label">Correo electrónico</label>
|
<label for="email" class="form-label">Correo electrónico</label>
|
||||||
<input
|
<input
|
||||||
type="email"
|
type="email"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
id="email"
|
id="email"
|
||||||
name="email"
|
name="email"
|
||||||
placeholder="{{ 'global.form.email.placeholder' | translate }}"
|
placeholder="Correo electrónico"
|
||||||
formControlName="email"
|
formControlName="email"
|
||||||
data-cy="email"
|
data-cy="email"
|
||||||
/>
|
/>
|
||||||
|
@ -125,13 +137,17 @@
|
||||||
>
|
>
|
||||||
Your email cannot be longer than 100 characters.
|
Your email cannot be longer than 100 characters.
|
||||||
</small>
|
</small>
|
||||||
|
|
||||||
|
<small class="form-text text-danger" *ngIf="registerForm.get('email')?.errors?.email">
|
||||||
|
Se requiere un correo electrónico válido.
|
||||||
|
</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="password" jhiTranslate="global.form.newpassword.label">Password</label>
|
<label for="password">Nueva contraseña</label>
|
||||||
<input
|
<input
|
||||||
type="password"
|
type="password"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
|
@ -176,7 +192,7 @@
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="password" jhiTranslate="global.form.newpassword.label">Password</label>
|
<label for="password">Repetir nueva contraseña</label>
|
||||||
<input
|
<input
|
||||||
type="password"
|
type="password"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
|
@ -231,7 +247,7 @@
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
[disabled]="registerForm.invalid"
|
[disabled]="registerForm.invalid"
|
||||||
class="btn btn-primary w-100"
|
class="ds-btn ds-btn--primary w-100"
|
||||||
jhiTranslate="register.form.button"
|
jhiTranslate="register.form.button"
|
||||||
data-cy="submit"
|
data-cy="submit"
|
||||||
>
|
>
|
||||||
|
|
|
@ -65,6 +65,7 @@ describe('Component Tests', () => {
|
||||||
name: '',
|
name: '',
|
||||||
profileIcon: 1,
|
profileIcon: 1,
|
||||||
isAdmin: 1,
|
isAdmin: 1,
|
||||||
|
isGoogle: 0,
|
||||||
});
|
});
|
||||||
expect(comp.success).toBe(true);
|
expect(comp.success).toBe(true);
|
||||||
expect(comp.errorUserExists).toBe(false);
|
expect(comp.errorUserExists).toBe(false);
|
||||||
|
|
|
@ -57,8 +57,8 @@ export class UsuarioExtraUpdateComponent {
|
||||||
registerForm = this.fb.group({
|
registerForm = this.fb.group({
|
||||||
name: ['', [Validators.required, Validators.minLength(2), Validators.maxLength(254)]],
|
name: ['', [Validators.required, Validators.minLength(2), Validators.maxLength(254)]],
|
||||||
email: ['', [Validators.required, Validators.minLength(5), Validators.maxLength(254), Validators.email]],
|
email: ['', [Validators.required, Validators.minLength(5), Validators.maxLength(254), Validators.email]],
|
||||||
password: ['', [Validators.required, Validators.minLength(4), Validators.maxLength(50)]],
|
password: ['', [Validators.required, Validators.minLength(8), Validators.maxLength(50)]],
|
||||||
confirmPassword: ['', [Validators.required, Validators.minLength(4), Validators.maxLength(50)]],
|
confirmPassword: ['', [Validators.required, Validators.minLength(8), Validators.maxLength(50)]],
|
||||||
});
|
});
|
||||||
|
|
||||||
constructor(private translateService: TranslateService, private registerService: RegisterService, private fb: FormBuilder) {}
|
constructor(private translateService: TranslateService, private registerService: RegisterService, private fb: FormBuilder) {}
|
||||||
|
@ -82,7 +82,6 @@ export class UsuarioExtraUpdateComponent {
|
||||||
const login = this.registerForm.get(['email'])!.value;
|
const login = this.registerForm.get(['email'])!.value;
|
||||||
const email = this.registerForm.get(['email'])!.value;
|
const email = this.registerForm.get(['email'])!.value;
|
||||||
const name = this.registerForm.get(['name'])!.value;
|
const name = this.registerForm.get(['name'])!.value;
|
||||||
console.log(name);
|
|
||||||
|
|
||||||
this.registerService
|
this.registerService
|
||||||
.save({
|
.save({
|
||||||
|
@ -93,6 +92,7 @@ export class UsuarioExtraUpdateComponent {
|
||||||
name,
|
name,
|
||||||
profileIcon: this.profileIcon,
|
profileIcon: this.profileIcon,
|
||||||
isAdmin: 1,
|
isAdmin: 1,
|
||||||
|
isGoogle: 0,
|
||||||
})
|
})
|
||||||
.subscribe(
|
.subscribe(
|
||||||
() => (this.success = true),
|
() => (this.success = true),
|
||||||
|
|
|
@ -77,7 +77,7 @@
|
||||||
<li class="position-absolute fixed-bottom w-100 mb-5">
|
<li class="position-absolute fixed-bottom w-100 mb-5">
|
||||||
<a (click)="logout()" class="p-3 w-100 m-0 text-center">
|
<a (click)="logout()" class="p-3 w-100 m-0 text-center">
|
||||||
<!-- <i class="nc-icon nc-user-run"></i> -->
|
<!-- <i class="nc-icon nc-user-run"></i> -->
|
||||||
<p style="letter-spacing: 0.3rem">Cerrar Sesion</p>
|
<p style="letter-spacing: 0.3rem">Cerrar Sesión</p>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="position-absolute fixed-bottom w-100 mb-5" style="bottom: -4rem">
|
<li class="position-absolute fixed-bottom w-100 mb-5" style="bottom: -4rem">
|
||||||
|
|
|
@ -6,7 +6,7 @@ import { Account } from 'app/core/auth/account.model';
|
||||||
import { AccountService } from 'app/core/auth/account.service';
|
import { AccountService } from 'app/core/auth/account.service';
|
||||||
import { LoginService } from 'app/login/login.service';
|
import { LoginService } from 'app/login/login.service';
|
||||||
import { ProfileService } from 'app/layouts/profiles/profile.service';
|
import { ProfileService } from 'app/layouts/profiles/profile.service';
|
||||||
import { SessionStorageService } from 'ngx-webstorage';
|
import { LocalStorageService, SessionStorageService } from 'ngx-webstorage';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { UsuarioExtraService } from 'app/entities/usuario-extra/service/usuario-extra.service';
|
import { UsuarioExtraService } from 'app/entities/usuario-extra/service/usuario-extra.service';
|
||||||
import { UsuarioExtra } from 'app/entities/usuario-extra/usuario-extra.model';
|
import { UsuarioExtra } from 'app/entities/usuario-extra/usuario-extra.model';
|
||||||
|
@ -31,6 +31,7 @@ export class SidebarComponent {
|
||||||
constructor(
|
constructor(
|
||||||
private loginService: LoginService,
|
private loginService: LoginService,
|
||||||
private sessionStorageService: SessionStorageService,
|
private sessionStorageService: SessionStorageService,
|
||||||
|
private localStorageService: LocalStorageService,
|
||||||
private accountService: AccountService,
|
private accountService: AccountService,
|
||||||
private profileService: ProfileService,
|
private profileService: ProfileService,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
|
@ -87,6 +88,7 @@ export class SidebarComponent {
|
||||||
this.collapseNavbar();
|
this.collapseNavbar();
|
||||||
this.loginService.logout();
|
this.loginService.logout();
|
||||||
this.router.navigate(['']);
|
this.router.navigate(['']);
|
||||||
|
this.localStorageService.clear('IsGoogle');
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleNavbar(): void {
|
toggleNavbar(): void {
|
||||||
|
|
|
@ -69,9 +69,9 @@
|
||||||
<div class="card-body p-4">
|
<div class="card-body p-4">
|
||||||
<div class="text-center w-75 m-auto">
|
<div class="text-center w-75 m-auto">
|
||||||
<h4 class="text-dark-50 text-center pb-0 fw-bold p-0 m-0" style="color: #727070; font-weight: 700; font-size: 1.3rem">
|
<h4 class="text-dark-50 text-center pb-0 fw-bold p-0 m-0" style="color: #727070; font-weight: 700; font-size: 1.3rem">
|
||||||
INICIAR SESION
|
INICIAR SESIÓN
|
||||||
</h4>
|
</h4>
|
||||||
<p class="mb-4" style="color: rgba(146, 146, 146, 0.664)">Ingrese su correo electrónico y contraseña.</p>
|
<p class="mb-4" style="color: rgba(146, 146, 146, 0.664)">Ingrese su correo electrónico y contraseña</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
|
@ -82,10 +82,11 @@
|
||||||
>
|
>
|
||||||
<strong>Failed to sign in!</strong> Please check your credentials and try again.
|
<strong>Failed to sign in!</strong> Please check your credentials and try again.
|
||||||
</div>
|
</div>
|
||||||
<form class="form" role="form" (ngSubmit)="login()" [formGroup]="loginForm">
|
|
||||||
|
<form class="ds-form" role="form" (ngSubmit)="login()" [formGroup]="loginForm">
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="emailaddress" class="form-label">Correo electrónico</label>
|
<label for="username" class="form-label">Correo electrónico</label>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
|
@ -96,6 +97,41 @@
|
||||||
#username
|
#username
|
||||||
data-cy="username"
|
data-cy="username"
|
||||||
/>
|
/>
|
||||||
|
<div
|
||||||
|
*ngIf="loginForm.get('username')!.invalid && (loginForm.get('username')!.dirty || loginForm.get('username')!.touched)"
|
||||||
|
>
|
||||||
|
<small
|
||||||
|
class="form-text text-danger"
|
||||||
|
*ngIf="loginForm.get('username')?.errors?.required"
|
||||||
|
jhiTranslate="global.messages.validate.email.required"
|
||||||
|
>
|
||||||
|
Your email is required
|
||||||
|
</small>
|
||||||
|
|
||||||
|
<small
|
||||||
|
class="form-text text-danger"
|
||||||
|
*ngIf="loginForm.get('username')?.errors?.email"
|
||||||
|
jhiTranslate="global.messages.validate.email.invalid"
|
||||||
|
>
|
||||||
|
Your email is invalid
|
||||||
|
</small>
|
||||||
|
|
||||||
|
<!--<small
|
||||||
|
class="form-text text-danger"
|
||||||
|
*ngIf="loginForm.get('username')?.errors?.minlength"
|
||||||
|
jhiTranslate="global.messages.validate.email.minlength"
|
||||||
|
>
|
||||||
|
Your email is required to be at least 5 characters
|
||||||
|
</small> -->
|
||||||
|
|
||||||
|
<small
|
||||||
|
class="form-text text-danger"
|
||||||
|
*ngIf="loginForm.get('username')?.errors?.maxlength"
|
||||||
|
jhiTranslate="global.messages.validate.email.maxlength"
|
||||||
|
>
|
||||||
|
Your email cannot be longer than 100 characters
|
||||||
|
</small>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -111,6 +147,33 @@
|
||||||
formControlName="password"
|
formControlName="password"
|
||||||
data-cy="password"
|
data-cy="password"
|
||||||
/>
|
/>
|
||||||
|
<div
|
||||||
|
*ngIf="loginForm.get('password')!.invalid && (loginForm.get('password')!.dirty || loginForm.get('password')!.touched)"
|
||||||
|
>
|
||||||
|
<small
|
||||||
|
class="form-text text-danger"
|
||||||
|
*ngIf="loginForm.get('password')?.errors?.required"
|
||||||
|
jhiTranslate="global.messages.validate.newpassword.required"
|
||||||
|
>
|
||||||
|
Your password is required
|
||||||
|
</small>
|
||||||
|
|
||||||
|
<small
|
||||||
|
class="form-text text-danger"
|
||||||
|
*ngIf="loginForm.get('password')?.errors?.minlength"
|
||||||
|
jhiTranslate="global.messages.validate.newpassword.minlength"
|
||||||
|
>
|
||||||
|
Your password is required to be at least 8 characters
|
||||||
|
</small>
|
||||||
|
|
||||||
|
<small
|
||||||
|
class="form-text text-danger"
|
||||||
|
*ngIf="loginForm.get('password')?.errors?.maxlength"
|
||||||
|
jhiTranslate="global.messages.validate.newpassword.maxlength"
|
||||||
|
>
|
||||||
|
Your password cannot be longer than 50 characters
|
||||||
|
</small>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -125,9 +188,33 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mb-3 mb-0 text-center">
|
<div class="mb-3 mb-0 text-center">
|
||||||
<button type="submit" class="btn btn-primary w-100" data-cy="submit">Iniciar sesion</button>
|
<button type="submit" class="ds-btn ds-btn--primary w-100" data-cy="submit">Iniciar sesión</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mb-3 mb-0 text-center">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="ds-btn ds-btn--google w-100 d-flex align-items-center justify-content-center"
|
||||||
|
(click)="signInWithGoogle()"
|
||||||
|
>
|
||||||
|
<img class="mr-2" src="./../../content/img_datasurvey/google-logo.svg" />
|
||||||
|
Iniciar con Google
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
<!-- <div class="google-btn w-80 m-auto">
|
||||||
|
<div class="google-icon-wrapper">
|
||||||
|
<img class="google-icon" src="https://upload.wikimedia.org/wikipedia/commons/5/53/Google_%22G%22_Logo.svg" />
|
||||||
|
</div>
|
||||||
|
<button class="btn-text" (click)="signInWithGoogle()">Iniciar con Google</button>
|
||||||
|
</div> -->
|
||||||
|
|
||||||
|
<!--<div class="mb-3 mb-0">
|
||||||
|
<button class="btn" (click)="signInWithGoogle()">
|
||||||
|
<i class="fa fa-Google">Iniciar con Google</i>
|
||||||
|
</button>
|
||||||
|
</div>-->
|
||||||
</div>
|
</div>
|
||||||
<!-- end card-body -->
|
<!-- end card-body -->
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,3 +1,56 @@
|
||||||
body {
|
body {
|
||||||
background-color: #f2f2f2 !important;
|
background-color: #f2f2f2 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$white: #fff;
|
||||||
|
$google-blue: #4285f4;
|
||||||
|
$button-active-blue: #1669f2;
|
||||||
|
|
||||||
|
.google-btn {
|
||||||
|
width: 184px;
|
||||||
|
height: 42px;
|
||||||
|
background-color: $google-blue !important;
|
||||||
|
border-radius: 2px;
|
||||||
|
box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
.google-icon-wrapper {
|
||||||
|
position: absolute;
|
||||||
|
margin-top: 1px;
|
||||||
|
margin-left: 1px;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 2px;
|
||||||
|
background-color: $white;
|
||||||
|
}
|
||||||
|
.google-icon {
|
||||||
|
position: absolute;
|
||||||
|
margin-top: 11px;
|
||||||
|
margin-left: 11px;
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
}
|
||||||
|
.btn-text {
|
||||||
|
float: right;
|
||||||
|
margin: 5px 5px 0px 0px;
|
||||||
|
color: $white;
|
||||||
|
font-size: 14px;
|
||||||
|
letter-spacing: 0.2px;
|
||||||
|
font-family: 'Roboto';
|
||||||
|
background-color: $google-blue;
|
||||||
|
width: 135px;
|
||||||
|
height: 30px;
|
||||||
|
padding: 6px 6px 7px 6px;
|
||||||
|
border: $google-blue;
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
box-shadow: 0 0 6px $google-blue !important;
|
||||||
|
}
|
||||||
|
&:active {
|
||||||
|
background: $button-active-blue !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.google-div {
|
||||||
|
margin-left: 150px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@import url(https://fonts.googleapis.com/css?family=Roboto:500);
|
||||||
|
|
|
@ -12,6 +12,7 @@ import { AccountService } from 'app/core/auth/account.service';
|
||||||
|
|
||||||
import { LoginService } from './login.service';
|
import { LoginService } from './login.service';
|
||||||
import { LoginComponent } from './login.component';
|
import { LoginComponent } from './login.component';
|
||||||
|
import { SocialAuthService } from 'angularx-social-login';
|
||||||
|
|
||||||
describe('Component Tests', () => {
|
describe('Component Tests', () => {
|
||||||
describe('LoginComponent', () => {
|
describe('LoginComponent', () => {
|
|
@ -4,6 +4,13 @@ import { Router } from '@angular/router';
|
||||||
|
|
||||||
import { LoginService } from 'app/login/login.service';
|
import { LoginService } from 'app/login/login.service';
|
||||||
import { AccountService } from 'app/core/auth/account.service';
|
import { AccountService } from 'app/core/auth/account.service';
|
||||||
|
import { SocialAuthService, SocialUser } from 'angularx-social-login';
|
||||||
|
import { GoogleLoginProvider } from 'angularx-social-login';
|
||||||
|
import { RegisterService } from '../account/register/register.service';
|
||||||
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
import { HttpErrorResponse } from '@angular/common/http';
|
||||||
|
import { EMAIL_ALREADY_USED_TYPE, LOGIN_ALREADY_USED_TYPE } from '../config/error.constants';
|
||||||
|
import { LocalStorageService } from 'ngx-webstorage';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'jhi-login',
|
selector: 'jhi-login',
|
||||||
|
@ -15,21 +22,44 @@ export class LoginComponent implements OnInit, AfterViewInit {
|
||||||
username!: ElementRef;
|
username!: ElementRef;
|
||||||
|
|
||||||
authenticationError = false;
|
authenticationError = false;
|
||||||
|
error = false;
|
||||||
|
errorEmailExists = false;
|
||||||
|
errorUserExists = false;
|
||||||
|
|
||||||
loginForm = this.fb.group({
|
loginForm = this.fb.group({
|
||||||
username: [null, [Validators.required]],
|
username: [null, [Validators.required, Validators.email, Validators.maxLength(254)]],
|
||||||
password: [null, [Validators.required]],
|
password: [null, [Validators.required, Validators.minLength(8), Validators.maxLength(50)]],
|
||||||
rememberMe: [false],
|
rememberMe: [false],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
user: SocialUser = new SocialUser();
|
||||||
|
loggedIn: boolean = false;
|
||||||
|
success = false;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
|
private localStorageService: LocalStorageService,
|
||||||
private accountService: AccountService,
|
private accountService: AccountService,
|
||||||
private loginService: LoginService,
|
private loginService: LoginService,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
private fb: FormBuilder
|
private fb: FormBuilder,
|
||||||
|
private authService: SocialAuthService,
|
||||||
|
private registerService: RegisterService,
|
||||||
|
private translateService: TranslateService
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
|
//Servicio para verificar si el usuario se encuentra loggeado
|
||||||
|
/*this.authService.authState.subscribe(user => {
|
||||||
|
this.user = user;
|
||||||
|
this.loggedIn = user != null;
|
||||||
|
|
||||||
|
/!* console.log('correo: ' + user.email);
|
||||||
|
console.log('correo: ' + user.name);
|
||||||
|
console.log('ID: ' + this.user.id);*!/
|
||||||
|
|
||||||
|
this.authenticacionGoogle();
|
||||||
|
});
|
||||||
|
*/
|
||||||
// if already authenticated then navigate to home page
|
// if already authenticated then navigate to home page
|
||||||
this.accountService.identity().subscribe(() => {
|
this.accountService.identity().subscribe(() => {
|
||||||
if (this.accountService.isAuthenticated()) {
|
if (this.accountService.isAuthenticated()) {
|
||||||
|
@ -39,7 +69,90 @@ export class LoginComponent implements OnInit, AfterViewInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
ngAfterViewInit(): void {
|
ngAfterViewInit(): void {
|
||||||
this.username.nativeElement.focus();
|
// this.username.nativeElement.focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
//Inicio Google
|
||||||
|
signInWithGoogle(): void {
|
||||||
|
this.authService.signIn(GoogleLoginProvider.PROVIDER_ID).then(() => {
|
||||||
|
this.authService.authState.subscribe(user => {
|
||||||
|
this.user = user;
|
||||||
|
this.loggedIn = user != null;
|
||||||
|
|
||||||
|
/* console.log('correo: ' + user.email);
|
||||||
|
console.log('correo: ' + user.name);
|
||||||
|
console.log('ID: ' + this.user.id);*/
|
||||||
|
|
||||||
|
this.authenticacionGoogle();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
authenticacionGoogle(): void {
|
||||||
|
this.loginService.login({ username: this.user.email, password: this.user.id, rememberMe: true }).subscribe(
|
||||||
|
() => {
|
||||||
|
this.authenticationError = false;
|
||||||
|
if (!this.router.getCurrentNavigation()) {
|
||||||
|
this.localStorageService.store('IsGoogle', 'true');
|
||||||
|
// There were no routing during login (eg from navigationToStoredUrl)
|
||||||
|
this.router.navigate(['']);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
() => this.activateGoogle()
|
||||||
|
/*this.registerService
|
||||||
|
.save({
|
||||||
|
login: this.user.email,
|
||||||
|
email: this.user.email,
|
||||||
|
password: this.user.id,
|
||||||
|
langKey: this.translateService.currentLang,
|
||||||
|
name: this.user.name,
|
||||||
|
profileIcon: this.randomProfilePic(),
|
||||||
|
isAdmin: 0,
|
||||||
|
})
|
||||||
|
.subscribe(
|
||||||
|
() => (this.success = true),
|
||||||
|
response => this.processError(response)
|
||||||
|
) */ //console.log("Usuario no existe")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
randomProfilePic(): number {
|
||||||
|
return Math.floor(Math.random() * (28 - 1 + 1)) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
processError(response: HttpErrorResponse): void {
|
||||||
|
if (response.status === 400 && response.error.type === LOGIN_ALREADY_USED_TYPE) {
|
||||||
|
this.errorUserExists = true;
|
||||||
|
} else if (response.status === 400 && response.error.type === EMAIL_ALREADY_USED_TYPE) {
|
||||||
|
this.errorEmailExists = true;
|
||||||
|
} else {
|
||||||
|
this.error = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
refreshToken(): void {
|
||||||
|
this.authService.refreshAuthToken(GoogleLoginProvider.PROVIDER_ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
activateGoogle(): void {
|
||||||
|
this.registerService
|
||||||
|
.save({
|
||||||
|
login: this.user.email,
|
||||||
|
email: this.user.email,
|
||||||
|
password: this.user.id,
|
||||||
|
langKey: this.translateService.currentLang,
|
||||||
|
name: this.user.name,
|
||||||
|
profileIcon: this.randomProfilePic(),
|
||||||
|
isAdmin: 0,
|
||||||
|
isGoogle: 1,
|
||||||
|
})
|
||||||
|
.subscribe(
|
||||||
|
() => {
|
||||||
|
this.success = true;
|
||||||
|
this.authenticacionGoogle();
|
||||||
|
},
|
||||||
|
response => this.processError(response)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
login(): void {
|
login(): void {
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
import { TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { UsuarioGoogleLogInService } from './usuario-google-log-in.service';
|
||||||
|
|
||||||
|
describe('UsuarioGoogleLogInService', () => {
|
||||||
|
let service: UsuarioGoogleLogInService;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
TestBed.configureTestingModule({});
|
||||||
|
service = TestBed.inject(UsuarioGoogleLogInService);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be created', () => {
|
||||||
|
expect(service).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,9 @@
|
||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import { Observable, ReplaySubject } from 'rxjs';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root',
|
||||||
|
})
|
||||||
|
export class UsuarioGoogleLogInService {
|
||||||
|
constructor() {}
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
import { Pipe, PipeTransform, Injectable } from '@angular/core';
|
||||||
|
|
||||||
|
@Pipe({
|
||||||
|
name: 'filter',
|
||||||
|
})
|
||||||
|
@Injectable()
|
||||||
|
export class FilterPipe implements PipeTransform {
|
||||||
|
transform(items: any[], field: string, value: string): any[] {
|
||||||
|
if (!items) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
if (!field || !value) {
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
|
||||||
|
return items.filter(singleItem => singleItem[field].toLowerCase().includes(value.toLowerCase()));
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,6 +12,7 @@ import { FormatMediumDatePipe } from './date/format-medium-date.pipe';
|
||||||
import { SortByDirective } from './sort/sort-by.directive';
|
import { SortByDirective } from './sort/sort-by.directive';
|
||||||
import { SortDirective } from './sort/sort.directive';
|
import { SortDirective } from './sort/sort.directive';
|
||||||
import { ItemCountComponent } from './pagination/item-count.component';
|
import { ItemCountComponent } from './pagination/item-count.component';
|
||||||
|
import { FilterPipe } from './pipes/filter';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [SharedLibsModule],
|
imports: [SharedLibsModule],
|
||||||
|
@ -27,6 +28,7 @@ import { ItemCountComponent } from './pagination/item-count.component';
|
||||||
SortByDirective,
|
SortByDirective,
|
||||||
SortDirective,
|
SortDirective,
|
||||||
ItemCountComponent,
|
ItemCountComponent,
|
||||||
|
FilterPipe,
|
||||||
],
|
],
|
||||||
exports: [
|
exports: [
|
||||||
SharedLibsModule,
|
SharedLibsModule,
|
||||||
|
@ -41,6 +43,7 @@ import { ItemCountComponent } from './pagination/item-count.component';
|
||||||
SortByDirective,
|
SortByDirective,
|
||||||
SortDirective,
|
SortDirective,
|
||||||
ItemCountComponent,
|
ItemCountComponent,
|
||||||
|
FilterPipe,
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class SharedModule {}
|
export class SharedModule {}
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<svg viewBox="0 0 24 24" width="24" height="24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g transform="matrix(1, 0, 0, 1, 27.009001, -39.238998)">
|
||||||
|
<path fill="#4285F4" d="M -3.264 51.509 C -3.264 50.719 -3.334 49.969 -3.454 49.239 L -14.754 49.239 L -14.754 53.749 L -8.284 53.749 C -8.574 55.229 -9.424 56.479 -10.684 57.329 L -10.684 60.329 L -6.824 60.329 C -4.564 58.239 -3.264 55.159 -3.264 51.509 Z"/>
|
||||||
|
<path fill="#34A853" d="M -14.754 63.239 C -11.514 63.239 -8.804 62.159 -6.824 60.329 L -10.684 57.329 C -11.764 58.049 -13.134 58.489 -14.754 58.489 C -17.884 58.489 -20.534 56.379 -21.484 53.529 L -25.464 53.529 L -25.464 56.619 C -23.494 60.539 -19.444 63.239 -14.754 63.239 Z"/>
|
||||||
|
<path fill="#FBBC05" d="M -21.484 53.529 C -21.734 52.809 -21.864 52.039 -21.864 51.239 C -21.864 50.439 -21.724 49.669 -21.484 48.949 L -21.484 45.859 L -25.464 45.859 C -26.284 47.479 -26.754 49.299 -26.754 51.239 C -26.754 53.179 -26.284 54.999 -25.464 56.619 L -21.484 53.529 Z"/>
|
||||||
|
<path fill="#EA4335" d="M -14.754 43.989 C -12.984 43.989 -11.404 44.599 -10.154 45.789 L -6.734 42.369 C -8.804 40.429 -11.514 39.239 -14.754 39.239 C -19.444 39.239 -23.494 41.939 -25.464 45.859 L -21.484 48.949 C -20.534 46.099 -17.884 43.989 -14.754 43.989 Z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
File diff suppressed because it is too large
Load Diff
|
@ -60,3 +60,14 @@
|
||||||
color: #d33232;
|
color: #d33232;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ds-btn--google {
|
||||||
|
background-color: transparent;
|
||||||
|
color: #787878;
|
||||||
|
border: 1px solid #e6e6e6;
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ $form-background: #f1f5f9;
|
||||||
}
|
}
|
||||||
|
|
||||||
input,
|
input,
|
||||||
|
input:-webkit-autofill,
|
||||||
select {
|
select {
|
||||||
background-color: $form-background;
|
background-color: $form-background;
|
||||||
border-radius: 15px;
|
border-radius: 15px;
|
||||||
|
@ -77,3 +78,11 @@ $form-background: #f1f5f9;
|
||||||
color: #757d94;
|
color: #757d94;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input:-internal-autofill-selected,
|
||||||
|
input:-webkit-autofill,
|
||||||
|
input:-webkit-autofill:hover,
|
||||||
|
input:-webkit-autofill:focus,
|
||||||
|
input:-webkit-autofill:active {
|
||||||
|
background-color: $form-background !important;
|
||||||
|
}
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
"dataSurveyApp": {
|
"dataSurveyApp": {
|
||||||
"AccesoEncuesta": {
|
"AccesoEncuesta": {
|
||||||
"null": "",
|
"null": "",
|
||||||
"PUBLIC": "PUBLIC",
|
"PUBLIC": "Pública",
|
||||||
"PRIVATE": "PRIVATE"
|
"PRIVATE": "Privada"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
"title": "Categorías",
|
"title": "Categorías",
|
||||||
"refreshListLabel": "Refrescar lista",
|
"refreshListLabel": "Refrescar lista",
|
||||||
"createLabel": "Crear nueva Categoría",
|
"createLabel": "Crear nueva Categoría",
|
||||||
"createOrEditLabel": "Crear o editar Categoría",
|
"createOrEditLabel": "Datos de Categoría",
|
||||||
"notFound": "Ninguna Categoría encontrada"
|
"notFound": "Ninguna Categoría encontrada"
|
||||||
},
|
},
|
||||||
"created": "Una nueva Categoría ha sido creada con el identificador {{ param }}",
|
"created": "Una nueva Categoría ha sido creada con el identificador {{ param }}",
|
||||||
|
@ -21,7 +21,10 @@
|
||||||
"nombre": "Nombre",
|
"nombre": "Nombre",
|
||||||
"estado": "Estado",
|
"estado": "Estado",
|
||||||
"encuesta": "Encuesta",
|
"encuesta": "Encuesta",
|
||||||
"plantilla": "Plantilla"
|
"plantilla": "Plantilla",
|
||||||
|
"errors": {
|
||||||
|
"duplicateName": "Ya existe una categoría con ese nombre."
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
"usuarioEncuesta": "Usuario Encuesta",
|
"usuarioEncuesta": "Usuario Encuesta",
|
||||||
"ePreguntaAbierta": "E Pregunta Abierta",
|
"ePreguntaAbierta": "E Pregunta Abierta",
|
||||||
"ePreguntaCerrada": "E Pregunta Cerrada",
|
"ePreguntaCerrada": "E Pregunta Cerrada",
|
||||||
"categoria": "Categoria",
|
"categoria": "Categoría",
|
||||||
"usuarioExtra": "Usuario Extra"
|
"usuarioExtra": "Usuario Extra"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
"dataSurveyApp": {
|
"dataSurveyApp": {
|
||||||
"EstadoCategoria": {
|
"EstadoCategoria": {
|
||||||
"null": "",
|
"null": "",
|
||||||
"ACTIVE": "ACTIVA",
|
"ACTIVE": "Activa",
|
||||||
"INACTIVE": "INACTIVA"
|
"INACTIVE": "Inactiva"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
"dataSurveyApp": {
|
"dataSurveyApp": {
|
||||||
"EstadoColaborador": {
|
"EstadoColaborador": {
|
||||||
"null": "",
|
"null": "",
|
||||||
"PENDING": "PENDING",
|
"PENDING": "Pendiente",
|
||||||
"ACTIVE": "ACTIVE"
|
"ACTIVE": "Activo"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
"dataSurveyApp": {
|
"dataSurveyApp": {
|
||||||
"EstadoEncuesta": {
|
"EstadoEncuesta": {
|
||||||
"null": "",
|
"null": "",
|
||||||
"DRAFT": "DRAFT",
|
"DRAFT": "Borrador",
|
||||||
"ACTIVE": "ACTIVE",
|
"ACTIVE": "Activa",
|
||||||
"FINISHED": "FINISHED",
|
"FINISHED": "Finalizada",
|
||||||
"DELETED": "DELETED"
|
"DELETED": "Eliminada"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
"dataSurveyApp": {
|
"dataSurveyApp": {
|
||||||
"EstadoPlantilla": {
|
"EstadoPlantilla": {
|
||||||
"null": "",
|
"null": "",
|
||||||
"DRAFT": "DRAFT",
|
"DRAFT": "Borrador",
|
||||||
"ACTIVE": "ACTIVE",
|
"ACTIVE": "Activa",
|
||||||
"DELETED": "DELETED",
|
"DELETED": "Eliminada",
|
||||||
"DISABLED": "DISABLED"
|
"DISABLED": "Desactivada"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
"dataSurveyApp": {
|
"dataSurveyApp": {
|
||||||
"EstadoUsuario": {
|
"EstadoUsuario": {
|
||||||
"null": "",
|
"null": "",
|
||||||
"ACTIVE": "ACTIVE",
|
"ACTIVE": "Activo",
|
||||||
"SUSPENDED": "SUSPENDED"
|
"SUSPENDED": "Bloqueado"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
"ePreguntaCerrada": "E Pregunta Cerrada",
|
"ePreguntaCerrada": "E Pregunta Cerrada",
|
||||||
"ePreguntaCerradaOpcion": "E Pregunta Cerrada Opcion",
|
"ePreguntaCerradaOpcion": "E Pregunta Cerrada Opcion",
|
||||||
"usuarioEncuesta": "Usuario Encuesta",
|
"usuarioEncuesta": "Usuario Encuesta",
|
||||||
"categoria": "Categoria",
|
"categoria": "Categoría",
|
||||||
"factura": "Factura",
|
"factura": "Factura",
|
||||||
"plantilla": "Plantilla",
|
"plantilla": "Plantilla",
|
||||||
"pPreguntaAbierta": "P Pregunta Abierta",
|
"pPreguntaAbierta": "P Pregunta Abierta",
|
||||||
|
@ -78,13 +78,13 @@
|
||||||
"validate": {
|
"validate": {
|
||||||
"newpassword": {
|
"newpassword": {
|
||||||
"required": "Se requiere que ingrese una contraseña.",
|
"required": "Se requiere que ingrese una contraseña.",
|
||||||
"minlength": "Se requiere que su contraseña tenga por lo menos 4 caracteres",
|
"minlength": "Se requiere que su contraseña tenga por lo menos 8 caracteres",
|
||||||
"maxlength": "Su contraseña no puede tener más de 50 caracteres",
|
"maxlength": "Su contraseña no puede tener más de 50 caracteres",
|
||||||
"strength": "Seguridad de la contraseña:"
|
"strength": "Seguridad de la contraseña:"
|
||||||
},
|
},
|
||||||
"confirmpassword": {
|
"confirmpassword": {
|
||||||
"required": "Se requiere que confirme la contraseña.",
|
"required": "Se requiere que confirme la contraseña.",
|
||||||
"minlength": "Se requiere que su contraseña de confirmación tenga por lo menos 4 caracteres",
|
"minlength": "Se requiere que su contraseña de confirmación tenga por lo menos 8 caracteres",
|
||||||
"maxlength": "Su contraseña de confirmación no puede tener más de 50 caracteres"
|
"maxlength": "Su contraseña de confirmación no puede tener más de 50 caracteres"
|
||||||
},
|
},
|
||||||
"email": {
|
"email": {
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
},
|
},
|
||||||
"messages": {
|
"messages": {
|
||||||
"error": {
|
"error": {
|
||||||
"authentication": "<strong>¡El inicio de sesión ha fallado!</strong> Por favor, revise las credenciales e intente de nuevo."
|
"authentication": "Revise las credenciales e intente de nuevo "
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"password": {
|
"password": {
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
"precio": "Precio",
|
"precio": "Precio",
|
||||||
"pPreguntaCerrada": "P Pregunta Cerrada",
|
"pPreguntaCerrada": "P Pregunta Cerrada",
|
||||||
"pPreguntaAbierta": "P Pregunta Abierta",
|
"pPreguntaAbierta": "P Pregunta Abierta",
|
||||||
"categoria": "Categoria",
|
"categoria": "Categoría",
|
||||||
"usuarioExtra": "Usuario Extra"
|
"usuarioExtra": "Usuario Extra"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
"dataSurveyApp": {
|
"dataSurveyApp": {
|
||||||
"PreguntaCerradaTipo": {
|
"PreguntaCerradaTipo": {
|
||||||
"null": "",
|
"null": "",
|
||||||
"SINGLE": "SINGLE",
|
"SINGLE": "Única",
|
||||||
"MULTIPLE": "MULTIPLE"
|
"MULTIPLE": "Múltiple"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"register": {
|
"register": {
|
||||||
"title": "Registro",
|
"title": "Registro",
|
||||||
"form": {
|
"form": {
|
||||||
"button": "Crear la cuenta"
|
"button": "Guardar"
|
||||||
},
|
},
|
||||||
"messages": {
|
"messages": {
|
||||||
"validate": {
|
"validate": {
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
"adminsuccess": "<strong>¡Registro guardado!</strong> Por favor, revise el correo electrónico para confirmar.",
|
"adminsuccess": "<strong>¡Registro guardado!</strong> Por favor, revise el correo electrónico para confirmar.",
|
||||||
"error": {
|
"error": {
|
||||||
"fail": "<strong>¡El registro ha fallado!</strong> Por favor, inténtelo de nuevo más tarde.",
|
"fail": "<strong>¡El registro ha fallado!</strong> Por favor, inténtelo de nuevo más tarde.",
|
||||||
"userexists": "<strong>¡El nombre de usuario ya está registrado!</strong> Por favor, escoja otro usuario.",
|
"userexists": "<strong>¡El correo electrónico ya está en uso!</strong> Por favor, escoja otro correo.",
|
||||||
"emailexists": "<strong>¡El correo electrónico ya está en uso!</strong> Por favor, escoja otro email."
|
"emailexists": "<strong>¡El correo electrónico ya está en uso!</strong> Por favor, escoja otro email."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
"dataSurveyApp": {
|
"dataSurveyApp": {
|
||||||
"RolColaborador": {
|
"RolColaborador": {
|
||||||
"null": "",
|
"null": "",
|
||||||
"READ": "READ",
|
"READ": "Lector",
|
||||||
"WRITE": "WRITE"
|
"WRITE": "Escritor"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,27 +2,29 @@
|
||||||
"dataSurveyApp": {
|
"dataSurveyApp": {
|
||||||
"usuarioExtra": {
|
"usuarioExtra": {
|
||||||
"home": {
|
"home": {
|
||||||
"title": "Usuario Extras",
|
"title": "Usuarios",
|
||||||
"refreshListLabel": "Refrescar lista",
|
"refreshListLabel": "Refrescar lista",
|
||||||
"createLabel": "Crear nuevo Usuario Extra",
|
"createLabel": "Crear nuevo administrador",
|
||||||
"createOrEditLabel": "Crear o editar Usuario Extra",
|
"createOrEditLabel": "Crear o editar usuario",
|
||||||
"notFound": "Ningún Usuario Extras encontrado"
|
"notFound": "Ningún usuario encontrado"
|
||||||
},
|
},
|
||||||
"created": "Un nuevo Usuario Extra ha sido creado con el identificador {{ param }}",
|
"created": "Un nuevo usuario ha sido creado",
|
||||||
"updated": "Un Usuario Extra ha sido actualizado con el identificador {{ param }}",
|
"updated": "El usuario con el identificador {{ param }} ha sido actualizado",
|
||||||
"deleted": "Un Usuario Extra ha sido eliminado con el identificador {{ param }}",
|
"deleted": "El usuario con el identificador {{ param }} ha sido eliminado",
|
||||||
"delete": {
|
"delete": {
|
||||||
"question": "¿Seguro que quiere eliminar Usuario Extra {{ id }}?"
|
"question": "¿Seguro que quiere eliminar el usuario {{ id }}?"
|
||||||
},
|
},
|
||||||
"detail": {
|
"detail": {
|
||||||
"title": "Usuario Extra"
|
"title": "Usuario"
|
||||||
},
|
},
|
||||||
"id": "ID",
|
"id": "ID",
|
||||||
|
"rol": "Rol",
|
||||||
"nombre": "Nombre",
|
"nombre": "Nombre",
|
||||||
"iconoPerfil": "Icono Perfil",
|
"iconoPerfil": "Icono",
|
||||||
"fechaNacimiento": "Fecha Nacimiento",
|
"fechaNacimiento": "Fecha de Nacimiento",
|
||||||
"estado": "Estado",
|
"estado": "Estado",
|
||||||
"user": "User",
|
"user": "Usuario",
|
||||||
|
"correo": "Correo electrónico",
|
||||||
"encuesta": "Encuesta",
|
"encuesta": "Encuesta",
|
||||||
"usuarioEncuesta": "Usuario Encuesta",
|
"usuarioEncuesta": "Usuario Encuesta",
|
||||||
"plantilla": "Plantilla"
|
"plantilla": "Plantilla"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"extends": "./tsconfig.json",
|
"extends": "./tsconfig.json",
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"outDir": "./target/classes/static/app",
|
"outDir": "./target/classes/static/app",
|
||||||
"types": []
|
"types": ["gapi", "gapi.auth2"]
|
||||||
},
|
},
|
||||||
"files": ["src/main/webapp/main.ts", "src/main/webapp/polyfills.ts"],
|
"files": ["src/main/webapp/main.ts", "src/main/webapp/polyfills.ts"],
|
||||||
"include": ["src/main/webapp/**/*.d.ts"]
|
"include": ["src/main/webapp/**/*.d.ts"]
|
||||||
|
|
Loading…
Reference in New Issue