fix incorrect gui refresh if theme is changed
implement custom clientstore add new Password page if password is set force entering password to successfully receive the token add a new unsafe api call for init call only
This commit is contained in:
52
src/pages/AuthenticationPage/AuthenticationPage.module.css
Normal file
52
src/pages/AuthenticationPage/AuthenticationPage.module.css
Normal file
@ -0,0 +1,52 @@
|
||||
.main {
|
||||
background-color: #00b3ff;
|
||||
margin-left: calc(50% - 125px);
|
||||
margin-top: 5%;
|
||||
padding-bottom: 15px;
|
||||
width: 250px;
|
||||
text-align: center;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.loginText {
|
||||
font-size: xx-large;
|
||||
text-align: center;
|
||||
margin-bottom: 15px;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.openmediacenterlabel {
|
||||
margin-top: 5%;
|
||||
text-align: center;
|
||||
font-size: xxx-large;
|
||||
font-weight: bold;
|
||||
text-transform: capitalize;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.input {
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
width: calc(100% - 20px);
|
||||
background: transparent;
|
||||
border-width: 0 0 1px 0;
|
||||
color: #505050;
|
||||
border-color: #505050;
|
||||
text-align: center;
|
||||
margin-bottom: 25px;
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
::placeholder {
|
||||
color: #505050;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
*:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.input:focus {
|
||||
color: black;
|
||||
border-color: black;
|
||||
}
|
21
src/pages/AuthenticationPage/AuthenticationPage.test.js
Normal file
21
src/pages/AuthenticationPage/AuthenticationPage.test.js
Normal file
@ -0,0 +1,21 @@
|
||||
import React from 'react';
|
||||
import AuthenticationPage from './AuthenticationPage';
|
||||
import {shallow} from 'enzyme';
|
||||
|
||||
describe('<AuthenticationPage/>', function () {
|
||||
it('renders without crashing ', function () {
|
||||
const wrapper = shallow(<AuthenticationPage submit={() => {}}/>);
|
||||
wrapper.unmount();
|
||||
});
|
||||
|
||||
it('test button click', function () {
|
||||
let pass;
|
||||
const func = jest.fn((pwd) => {pass = pwd});
|
||||
const wrapper = shallow(<AuthenticationPage submit={func}/>);
|
||||
wrapper.setState({pwdText: 'testpwd'});
|
||||
wrapper.find('Button').simulate('click');
|
||||
|
||||
expect(func).toHaveBeenCalledTimes(1);
|
||||
expect(pass).toBe('testpwd');
|
||||
});
|
||||
});
|
46
src/pages/AuthenticationPage/AuthenticationPage.tsx
Normal file
46
src/pages/AuthenticationPage/AuthenticationPage.tsx
Normal file
@ -0,0 +1,46 @@
|
||||
import React from "react";
|
||||
import {Button} from "../../elements/GPElements/Button";
|
||||
import style from './AuthenticationPage.module.css'
|
||||
|
||||
interface state {
|
||||
pwdText: string
|
||||
}
|
||||
|
||||
interface props {
|
||||
submit: (password: string) => void
|
||||
}
|
||||
|
||||
class AuthenticationPage extends React.Component<props, state> {
|
||||
constructor(props: props) {
|
||||
super(props);
|
||||
|
||||
this.state = {
|
||||
pwdText: ''
|
||||
}
|
||||
}
|
||||
|
||||
render(): JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div className={style.openmediacenterlabel}>OpenMediaCenter</div>
|
||||
<div className={style.main}>
|
||||
<div className={style.loginText}>Login</div>
|
||||
<div>
|
||||
<input className={style.input}
|
||||
placeholder='Password'
|
||||
type='password'
|
||||
onChange={(ch): void => this.setState({pwdText: ch.target.value})}
|
||||
value={this.state.pwdText}/>
|
||||
</div>
|
||||
<div>
|
||||
<Button title='Submit' onClick={(): void => {
|
||||
this.props.submit(this.state.pwdText);
|
||||
}}/>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default AuthenticationPage;
|
Reference in New Issue
Block a user