PHP实现管理员或日程创建人可见编辑删除按钮
礼堂/会议室预约系统日程详情权限逻辑优化
原有逻辑说明
- 原有日程详情模态框仅做了管理员权限校验:只有用户类型不为2的管理员账号可看到编辑、删除按钮,普通用户无法查看操作入口。
- 原有核心判断代码:
<?php if($_SESSION['userdata']['type'] !=2 ){ ?>
- 原有模态框完整代码如下:
<?php require_once('../../config.php'); if(isset($_GET['id']) && $_GET['id'] > 0){ $qry = $conn->query("SELECT s.*,a.room_name FROM `schedule_list` s inner join assembly_hall a on a.id = s.assembly_hall_id where s.id = '{$_GET['id']}' "); if($qry->num_rows > 0){ foreach($qry->fetch_assoc() as $k => $v){ $$k=$v; } } } ?> <div class="container-fluid p-2"> <p><b>Room/Hall Name:</b> <?php echo $room_name ?></p> <p><b>Email:</b> <?php echo strtolower($reserved_by) ?></p> <p><b>Date/Time Start:</b> <?php echo date("M d, Y h:i A",strtotime($datetime_start)) ?></p> <p><b>Date/Time End:</b> <?php echo date("M d, Y h:i A",strtotime($datetime_end)) ?></p> <p><b>Meeting Agenda:</b><br> <span><?php echo $schedule_remarks ?></span></p> </div> <div class="modal-footer"> <?php if($_SESSION['userdata']['type'] != 2 ){ ?> <button type="button" id="update" class="btn btn-primary btn-flat" data-id="<?php echo $_GET['id'] ?>">Edit</button> <button type="button" id="delete" class="btn btn-danger btn-flat" data-id="<?php echo $_GET['id'] ?>">Delete</button> <?php } ?>
优化需求
- 调整权限判断规则:当当前登录用户的邮箱与日程预约人邮箱(即
strtolower($reserved_by)的输出值)一致时,也就是当前用户为该日程的提交创建人,同样展示编辑、删除按钮,允许用户操作自己创建的日程。
可用实现代码
- 以下判断逻辑已验证可正常实现需求,替换原modal-footer区域的权限判断代码即可:
<?php if($_SESSION['userdata']['email'] == strtolower($reserved_by) ){ ?> <button type="button" id="update" class="btn btn-primary btn-flat" data-id="<?php echo $_GET['id'] ?>">Edit</button> <button type="button" id="delete" class="btn btn-danger btn-flat" data-id="<?php echo $_GET['id'] ?>">Delete</button> <?php } elseif ($_SESSION['userdata']['type'] == 1 ){ ?> <button type="button" id="update" class="btn btn-primary btn-flat" data-id="<?php echo $_GET['id'] ?>">Edit</button> <button type="button" id="delete" class="btn btn-danger btn-flat" data-id="<?php echo $_GET['id'] ?>">Delete</button> <?php } ?>
权限逻辑说明:优先校验当前用户是否为日程创建人(邮箱匹配即通过),其次校验当前用户是否为类型1的管理员,两类用户均可看到操作按钮;其余普通用户无操作入口。
内容的提问来源于stack exchange,提问作者Jonjon Candare
相关产品推荐
相关产品推荐

