본문 바로가기

Node

[#. Node] 관리자 패널, 대시보드를 제공하는 Admin Dashboard AdminBro admin login 관리자 로그인 authentication 3

반응형

 

 

 

 

 

 

 

 

 

localhost:8000/admin에 들어가면 이렇게 바로 사이드바에서 모델을 확인할 수 있었다

하지만 admin으로 로그인을 하고 권한이 있어야 모델들을 확인하고 CRUD를 할 수 있어야 한다

관리자 계정을 생성하고 로그인해야 대시보드에 접근할 수 있게 해보자

 

 

 

 

 

 

adminbro.com/tutorial-rbac.html

 

An Auto-generated Admin Panel for your Node.js Application

You, as a developer, provide database models, and AdminBro generates ReactJS UI which allows you (or other trusted users) to manage content.

adminbro.com

08. Role-Based Access Control 을 참고했다

=> 참고하긴 했지만 다른 방법으로 설정했다

 

 

 

 

 

 

 

 

 

① index.js ADMIN 정보 추가, router 수정

 

const ADMIN = {
  email: 'admin@a.aa',
  password: '12341234'
};

const router = AdminBroExpress.buildAuthenticatedRouter(adminBro, {
  authenticate: async (email, password) => {
    if (ADMIN.password === password && ADMIN.email === email) {
      return ADMIN
    }
      return null
    },
  cookieName: 'adminBro',
  cookiePassword: 'testtest'
});

 

 


index.js 전체 코드

 

const express = require("express");
const app = express();
const path = require("path");
const cors = require('cors')

const AdminBro = require('admin-bro')
const AdminBroExpress = require('@admin-bro/express')
const AdminBroMongoose = require('@admin-bro/mongoose')		// 추가
const User = require('./models/User')	// 추가

const config = require("./config/key");	// mongoDB 설정 파일

const mongoose = require("mongoose");

const connect = mongoose.connect(config.mongoURI,
  {
    useNewUrlParser: true, useUnifiedTopology: true,
    useCreateIndex: true, useFindAndModify: false
  })
  .then(() => console.log('MongoDB Connected...'))
  .catch(err => console.log(err));

AdminBro.registerAdapter(AdminBroMongoose)	// 추가

const adminBro = new AdminBro({
  databases: [ mongoose ]		// 수정
})

const ADMIN = {
  email: 'admin@a.aa',
  password: '12341234'
};

const router = AdminBroExpress.buildAuthenticatedRouter(adminBro, {
  authenticate: async (email, password) => {
    if (ADMIN.password === password && ADMIN.email === email) {
      return ADMIN
    }
      return null
    },
  cookieName: 'adminBro',
  cookiePassword: 'testtest'
});


app.use(adminBro.options.rootPath, router)

const port = process.env.PORT || 5000

app.listen(port, () => {
  console.log(`Server Listening on ${port}`)
});

 

이전 글에서와 달리 Admin Model은 뺐다

 

 

 

 

 

 

 

 

 

 

설정이 끝났다

이렇게 로그인하면 대시보드에 접근이 가능하고 Model 확인, CRUD가 가능하고 오른쪽 상단에서 로그아웃도 가능하다

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형