Search code examples
reactjstypescriptadmin-on-restreact-admin

Background image in react-admin Login page


I want to use a image to be put in as background image of login page in react-admin how can I do this ?

P.S: I'm using TypeScript


Solution

  • The Admin component have a loginPage prop. You can pass a custom component in that.

    Here is an example, create your LoginPage component:

    // LoginPage.js
    import React from 'react';
    import { Login, LoginForm } from 'react-admin';
    import { withStyles } from '@material-ui/core/styles';
    
    const styles = ({
        main: { background: '#333' },
        avatar: {
            background: 'url(//cdn.example.com/background.jpg)',
            backgroundRepeat: 'no-repeat',
            backgroundSize: 'contain',
            height: 80,
        },
        icon: { display: 'none' },
    });
    
    const CustomLoginForm = withStyles({
        button: { background: '#F15922' },
    })(LoginForm);
    
    const CustomLoginPage = props => (
        <Login
            loginForm={<CustomLoginForm />}
            {...props}
        />
    );
    
    export default withStyles(styles)(CustomLoginPage);
    

    And use it in your Admin:

    // App.js
    import { Admin } from 'react-admin';
    import LoginPage from './LoginPage';
    
    export default const App = () => (
        <Admin
            loginPage={LoginPage}
            {...props}
        >
            {resources}
        </Admin>
    );
    

    More infos about this prop in the documentation: Admin.loginPage