# 用户角色访问控制指南

## 用户名格式规则

- **管理员**: `a_<姓名>` (例如: `a_admin`, `a_zhangsan`)
- **老师**: `t_<姓名>` (例如: `t_teacher`, `t_lisi`)  
- **学生**: `s_<姓名>` (例如: `s_student`, `s_wangwu`)

## 权限说明

### 管理员权限
- 可以访问所有API端点
- 可以创建老师用户
- 可以创建学生用户
- 可以创建管理员用户

### 老师权限
- 可以访问老师端API (`/teacherAction/**`)
- 可以访问学生端API (`/studentAction/**`)
- 可以创建学生用户
- 不能创建老师或管理员用户

### 学生权限
- 只能访问学生端API (`/studentAction/**`)
- 不能创建任何用户

## API端点

### 用户管理API (`/userManagementAction/**`)

#### 创建老师用户
```
POST /userManagementAction/createTeacher
参数: username, password
权限: 仅管理员
```

#### 创建学生用户
```
POST /userManagementAction/createStudent
参数: username, password
权限: 管理员和老师
```

#### 创建管理员用户
```
POST /userManagementAction/createAdmin
参数: username, password
权限: 仅管理员
```

### 课程管理API示例 (`/courseAction/**`)

#### 选课API (学生端)
```
POST /courseAction/selectCourse
参数: courseId
权限: 学生
状态: 待实现
```

#### 创建课程API (老师端)
```
POST /courseAction/createCourse
参数: courseName, courseDescription
权限: 老师
状态: 待实现
```

#### 获取课程列表
```
GET /courseAction/getCourses
参数: page, pageSize
权限: 所有用户
状态: 待实现
```

## 使用示例

### 1. 管理员登录
```bash
# 假设已存在管理员用户 a_admin
POST /userAction/login
{
  "username": "a_admin",
  "password": "password"
}
```

### 2. 管理员创建老师用户
```bash
POST /userManagementAction/createTeacher
Headers: token: <登录返回的JWT>
{
  "username": "t_zhangsan",
  "password": "password123"
}
```

### 3. 老师创建学生用户
```bash
POST /userManagementAction/createStudent
Headers: token: <老师登录返回的JWT>
{
  "username": "s_lisi",
  "password": "password123"
}
```

## 注意事项

1. 所有API调用都需要在请求头中包含有效的JWT token
2. 用户名必须严格按照格式要求，否则会被拒绝
3. 拦截器会自动验证用户角色权限
4. 课程相关API目前只是空实现，需要创建相应的数据库表后才能完成功能

## 数据库表需求

为了完整实现课程功能，需要创建以下表：

1. **课程表** (courses)
   - id, course_name, course_description, teacher_id, create_time, etc.

2. **选课表** (student_courses)
   - id, student_id, course_id, select_time, etc.

3. **课程老师映射表** (如果需要多对多关系)
   - id, course_id, teacher_id, etc.

这些表创建后，就可以完成课程管理API的具体实现了。