본문 바로가기

포트폴리오 만들기/Vue, firebase 게시판 만들기

관리자 수정모드

반응형

firebase.google.com/docs/functions/config-env?authuser=0

 

환경 구성  |  Firebase

경우에 따라 함수에 타사 API 키 또는 조정 가능한 설정과 같은 추가적인 구성이 필요할 수 있습니다. Cloud 함수용 Firebase SDK는 이러한 프로젝트 관련 데이터 유형을 손쉽게 저장하고 검색할 수 있

firebase.google.com


firebase 데이터베이스 환경설정

// 1. 세팅해보기
cmd:>firebase functions:config:set admin.email=이메일주소@gmail.com admin.db_url=주소

// 2. 환경설정 값이 잘 저장되었는지 확인하기 
cmd:> firebase functions:config:get 

// 3. 환경설정 값이 잘 저장되었다면 디플로이 하기
cmd:> firebase deploy --only functions

functions/index.js

//생략

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  // 기존에 url 주소를 환경설정 값에 맞게 바꾼다.
  databaseURL: functions.config().admin.db_url // 'https://test-51087.firebaseio.com'
})

const db = admin.database()

exports.createUser = functions.auth.user().onCreate(async (user) => {
  const { uid, email, displayName, photoURL } = user
  const u = {
    email,
    displayName,
    photoURL,
    //실시간 데이터베이스는 Date로는 시간표시가 안되므로 getTime() 메서드 사용후 변환해야..
    createdAt: new Date().getTime(),
    // 관리자에게 level 0으로 권한주기 
    level: email === functions.config().admin.email ? 0 : 5
  }
  db.ref('users').child(uid).set(u)
})

exports.deleteUser = functions.auth.user().onDelete(async (user) => {
  const { uid } = user
  db.ref('users').child(uid).remove()
})

 


deploy 하기

cmd:> firebase deploy --only functions:createUser

database.rules.json

firebase.google.com/docs/database/security/user-security?authuser=0

 

사용자 기반 보안  |  Firebase 실시간 데이터베이스

이 문서에서는 데이터 보안 개념을 복습하면서 사전 정의된 auth 변수를 통합하여 완벽한 데이터 보안 솔루션을 만드는 과정을 설명합니다. 인증 통합 Firebase 인증은 Firebase 실시간 데이터베이스�

firebase.google.com

//실시간 데이터베이스에서 level이 0인 admin만 write를 할 수 있게 하자.
{
  "rules": {
    ".read": true,    
    "site": {
      ".write": "root.child('users').child(auth.uid).child('level').val() == 0"
    }    
  }
}

deploy 하기

//실시간 데이터베이스 디플로이 하는 방법.
cmd:> firebase deploy --only database

관리자에게 level 0 이 잘 주어졌는지 확인하기

 

반응형