定制 inium/laraboard 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

inium/laraboard

Composer 安装命令:

composer require inium/laraboard

包简介

A simple board on Laravel.

关键字:

README 文档

README

Laravel 게시판 스캐폴딩(Scaffolding) 패키지 입니다.

API 형태로 사용하기 위해 Laravel 9.x / PHP 8.x 기반으로 제작하였습니다. 게시판 게시글, 2 Depth 댓글을 지원하며 회원 정보는 Laravel에서 기본으로 제공하는 users를 이용합니다.

  • API 형태로 제작하였기 때문에 view 파일은 존재하지 않습니다.

구성

본 게시판 패키지는 아래의 항목으로 구성되어 있습니다.

항목 내용 비고
게시판
(board)
- 게시판 게시글과 댓글 작성시 부여할 포인트 설정
- 페이지당 보여질 게시글 수 / 댓글 수 설정
게시판 테이블에서 직접 설정
게시글
(post)
- 게시판별 게시글 목록, 검색, 조회, 추가, 수정, 삭제
- 게시글 제목 / 본문 검색
- 게시글 조회 시 조회수 1 증가
- 게시글 추가 시 게시판에서 설정된 포인트 부여
- 게시글 추가, 수정, 삭제 시 작성자 정보 저장 (Optional)
- 게시글 추가, 수정, 삭제 시 작성자 인증 확인
- 게시글에 댓글이 존재할 시 삭제 불가
- 게시글 추가 시 검색용으로 Strip tag된 게시글 본문 별도 저장
- 게시글 삭제 시 Soft Delete 적용
댓글
(comment)
- 게시글 댓글 목록, 검색, 조회, 추가, 수정, 삭제
- 댓글 본문 검색
- 댓글 추가 시 게시판에 설정된 포인트 부여
- 댓글 추가, 수정, 삭제 시 작성자 정보 저장 (Optional)
- 댓글 추가, 수정, 삭제 시 작성자 인증 확인
- 댓글에 댓글 (대댓글) 존재 시 해당 댓글 삭제 불가
- 댓글 추가 시 검색용으로 Strip tag된 게시글 본문 별도 저장
- 댓글 삭제 시 Soft Delete 적용
데이터베이스
(database)
- 게시판, 게시글, 댓글 테이블(migration)
- 게시판, 게시글 댓글 테스트 데이터 (factory, seeder)
- 게시글 200개 (일반글 )+ 5개(공지사항) 생성
- 댓글 100개 + 100개 댓글별 1~8개 사이의 자식 댓글 생성
기능 테스트
(Feature Test)
- 게시글, 댓글 CRUD에 대한 기능 테스트(Feature Test) 정의 - User Agent 포함한 Test 제외 (추후 추가 예정)

작성자 정보 저장 (Optional)

config/laraboad.phpcollect_user_info 항목을 true로 설정할 경우 아래의 정보를 게시글 및 댓글 작성 시 같이 저장합니다.

항목 내용 비고
IP 접속한 사용자의 IP Address 암호화 하여 저장
User Agent 접속한 사용자의 User Agent 문자열 암호화 하여 저장
Device Type 접속한 사용자가 사용한 기기 형태 desktop, tablet, mobile, others 중 1
Agent.php 참조
OS Name 접속한 사용자의 OS 이름 Agent.php 참조 / 확인불가 시 null
OS Version 접속한 사용자의 OS 버전 Agent.php 참조 / 확인불가 시 null
Browser Name 접속한 사용자의 Browser 이름 Agent.php 참조 / 확인불가 시 null
Browser Version 접속한 사용자의 Browser 버전 Agent.php 참조 / 확인불가 시 null

사용자 정보 인증

주의: Laravel의 HTTP 기본 인증은 email:password 문자열을 base64 인코딩하여 사용하기 때문에 보안에 취약하니 본 패키지 사용 시 반드시 변경하여 사용하시는 것을 권장합니다.

본 패키지는 구현의 편의를 위해 HTTP 기본 인증 (Basic Auth)을 이용합니다.

사용자 인증이 적용되는 범위는 아래와 같습니다.

항목 인증범위 비고
게시글
(post)
등록(POST), 수정(PUT), 삭제(DELETE) HTTP 기본 인증 (Basic Auth) 적용
댓글
(comment)
등록(POST), 수정(PUT), 삭제(DELETE) HTTP 기본 인증 (Basic Auth) 적용

Strip Tag: 게시글 / 댓글 저장

게시글, 댓글 본문 저장 시 strip tag (+html special char)를 적용하며 XSS Protection을 적용하였습니다.

허용할 tag는 config/laraboad.phpallow_post_content_tags, allow_comment_content_tags 에서 설정할 수 있습니다.

Dependencies

본 패키지는 아래의 의존성을 가지고 개발되었습니다.

항목 패키지 버전 설명 비고
Framework Laravel 9.x - -
Language PHP 8.x - -
External Pcakge jenssegers/agent 3.0@dev 사용자 IP Address, User Agent, OS 이름/버전, 접속 Browser 이름/버전 분석 composer 설치 (본 패키지 설치 시 자동으로 같이 설치)

사용방법

패키지 사용 방법은 아래와 같습니다.

1. Package install

아래와 같이 Laravel 9.x가 설치된 프로젝트 디렉터리 내에서 composer 명령어를 이용해 설치합니다.

composer require inium/laraboard

2. Publish files & Append routes

아래 명령어를 이용해 Laraboard의 파일들을 Publish 하고 route를 routes/api.php에 append 합니다

php artisan laraboard:publish

명령어를 실행하면 아래의 경로에 Laraboard 파일들을 생성합니다.

항목 Path 설명 비고
Controller app\Http\Controllers\Laraboard Laraboard 컨트롤러
Models app\Http\Models\Laraboard Laraboard 모델 Publish
Requests app\Http\Requests\Laraboard Laraboard Request
- Validation 수행
Publish
Config config/laraboard.php Laraboard 환경설정 파일 Publish
Database
Migrations
database/migrations/laraboard Laraboard 데이터베이스 테이블 정의 Publish
Database
Factories
database\Factories Laraboard 데이터베이스 팩토리 Publish
Database
Seeders
database\Seeders\Laraboard Laraboard 데이터베이스 Seed Publish
Route routes/laraboard/api.php Laraboard API route를 routes/api.php 하단에 포함(require)하여 적용 Publish
Test tests/Feature/Laraboard Laraboard 게시글(Post), 댓글(Comment)에 대한 기능 테스트 Publish
  • 비고 > Publish: 패키지 내 정의된 Laraboard 코드를 프로젝트에 배포합니다.

3. Database migration

아래 명령어를 이용해 Laraboard 테이블 정보를 migration 합니다.

php artisan migrate --path=database/migrations/laraboard

4. (Optional) 테스트 데이터 생성

테스트를 위한 데이터가 필요할 경우 아래 명령어를 이용해 테스트 데이터를 Laraboard 테이블에 추가할 수 있습니다.

php artisan db:seed --class="Database\\Seeders\\Laraboard\\LaraboardSeeder" 
  • 위 명령어 실행 시 많은 데이터를 추가하기 때문에 오랜 시간이 소요됩니다.

5. 기능 테스트

아래 명령어를 이용해 기능 테스트를 실행합니다.

php artisan test

기타

Timezone

본 게시판 패키지의 Timezone은 Laravel 프로젝트의 설정파일인 config/app.php에 지정된 Timezone을 이용합니다. 기본 Timezone은 UTC 입니다.

파일 업로드

본 게시판 패키지는 별도의 파일 업로드 기능이 구현되어 있지 않습니다.

관리

본 게시판 패키지의 관리 페이지는 구현되어 있지 않습니다.

API 명세

본 패키지의 게시글, 댓글 API에 대한 사용 방법은 아래 내용을 참조 바랍니다.

License

MIT

inium/laraboard 适用场景与选型建议

inium/laraboard 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 79 次下载、GitHub Stars 达 7, 最近一次更新时间为 2020 年 07 月 07 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「laravel」 「board」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 inium/laraboard 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 inium/laraboard 我们能提供哪些服务?
定制开发 / 二次开发

基于 inium/laraboard 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 79
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 7
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 7
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-07-07