request->headers->get('uuid-key'); $this->checkAuth($key); \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; return true; } //todo: Перенести на corp public function actionLogin() { $return = []; $accountsEntity = Accounts::find()->all(); /** @var Accounts $acc */ foreach($accountsEntity as $acc) { if (null == $acc->faceFeature->face_feature) { continue; } $return[] = ['id' =>$acc->id ,'face_feature'=> $acc->faceFeature->face_feature]; } return $return; } public function actionRegistration() { $post = Yii::$app->request->post(); $accountsEntity = Accounts::findOne([ 'login' => $post['login'], 'password' => md5($post['password']) ]); $this->log($_POST); if (null == $accountsEntity) return "Авторизация не пройдена"; $this->createFaceFeature($accountsEntity->id, $post['face_feature'], $post['token_device']); return $accountsEntity->id; } public function actionRegistrationid() { $post = Yii::$app->request->post(); $accountsEntity = Accounts::findOne([ 'id' => $post['id'] ]); if (null == $accountsEntity) return "Авторизация не пройдена"; $this->createFaceFeature($accountsEntity->id, $post['face_feature'], $post['token_device']); return $accountsEntity->id; } /** * Проверяет является ли пользователь администратором * * @param $face_feature * @param $token_device * @return string */ public function actionIsadmin() { $post = Yii::$app->request->post(); $ff = FaceFeature::findOne([ 'face_feature' => $post['face_feature'], 'token_device' => $post['token_device'] ]); $user = Accounts::findOne(['id' => $ff->id_account]); if ($user->isAdmin()) { return 'true'; } else { return 'false'; } } /** * Возвращает информацию по всем пользователям, относящимся к компании пользователся с $login и $pass * * @param $login * @param $pass * @param $token_device * @return array * @throws UnauthorizedHttpException */ public function actionUsers() { $post = Yii::$app->request->post(); $user = Accounts::findOne([ 'login' => $post['login'], 'password' => md5($post['pass']) ]); //uuid используется в beforeAction() надо проверить нужно ли в этой апишке if (!$user) { throw new UnauthorizedHttpException('Такого пользователя нет!'); } else { if ( !$user->isAdmin() ) { throw new UnauthorizedHttpException('Не достаточно прав.'); } } $company = Companies::findOne(['id' => $user->company_id]); $response = []; $users = Accounts::findAll(['company' => $company->id]); foreach ($users as $user) { $response[$company->name][] = [ 'userId' => $user->id, 'userName' => $user->name, 'faceFuture' => $user->getFaceFeature()->one()->face_feature ]; } return $response;//$this->asJson() } /** * Возвращает информацию по всем пользователям, сгруппированые по компаниям * * @param $login * @param $pass * @param $token_device * @return array * @throws UnauthorizedHttpException */ public function actionUsersinfo() { $post = Yii::$app->request->post(); $user = Accounts::findOne([ 'login' => $post['login'], 'password' => md5($post['pass']) ]); //uuid используется в beforeAction() надо проверить нужно ли в этой апишке if (!$user) { throw new UnauthorizedHttpException('Такого пользователя нет!'); } else { if ( !$user->isAdmin() ) { throw new UnauthorizedHttpException('Не достаточно прав.'); } } $companyArray = []; $resultArray = []; $users = Accounts::find()->all(); foreach ($users as $user) { $companyArray[$user->companies->name][] = [ 'user_id' => $user->id, 'user_name' => $user->name, 'user_ff' => $user->getFaceFeatureCurrent($user->id)['face_feature']//$user->getFaceFeature()->one()->face_feature ]; } foreach ($companyArray as $key => $user) { //var_dump($user); $resultArray[] = ['company_name' => $key, "persons" => $user ]; } return $resultArray;//$this->asJson() } /** * Возвращает информацию по всем пользователям, в компании администратора * * @param $login * @param $pass * @param $token_device * @return array * @throws UnauthorizedHttpException */ public function actionUserinfocompany() { $post = Yii::$app->request->post(); $user = Accounts::findOne([ 'login' => $post['login'], 'password' => md5($post['pass']) ]); //uuid используется в beforeAction() надо проверить нужно ли в этой апишке if (!$user) { throw new UnauthorizedHttpException('Такого пользователя нет!'); } else { if ( !$user->isAdmin() ) { throw new UnauthorizedHttpException('Не достаточно прав.'); } } $companyArray = []; $resultArray = []; $users = Accounts::find()->where(['company' => $user->company ])->all(); foreach ($users as $user) { $companyArray[$user->companies->name][] = [ 'user_id' => $user->id, 'user_name' => $user->name, 'user_ff' => $user->getFaceFeatureCurrent($user->id)['face_feature']//$user->getFaceFeature()->one()->face_feature ]; }//die(); foreach ($companyArray as $key => $user) { $resultArray[] = ['company_name' => $key, "persons" => $user ]; } return $users;//$resultArray;//$this->asJson() } /** * Добавление ff администратором * * @param $login_admin * @param $$pass_admin * @param $token_device * @param $login * @param $ffstr * @return array * @throws UnauthorizedHttpException */ public function actionAddnewff() { $post = Yii::$app->request->post(); $user = Accounts::findOne([ 'login' => $post['login_admin'], 'password' => md5($post['pass_admin']) ]); //uuid используется в beforeAction() надо проверить нужно ли в этой апишке if (!$user) { throw new UnauthorizedHttpException('Такого пользователя нет!'); } else { if ( !$user->isAdmin() ) { throw new UnauthorizedHttpException('Не достаточно прав.'); } } $userObj = Accounts::findOne(['id' => $post['user_id']]); $companyArray = []; $faceFeatureEntity = new FaceFeature(); $faceFeatureEntity->face_feature = $post['ffstr']; $faceFeatureEntity->id_account = $userObj->id; $faceFeatureEntity->token_device = $post['token_device']; if($faceFeatureEntity->save() ) { return ['message' => "Добавление face feature прошло успешно."]; } return $faceFeatureEntity->errors;//$this->asJson() } public function log($post) { $file = $_SERVER['DOCUMENT_ROOT'].'/people.txt'; // Открываем файл для получения существующего содержимого $current = file_get_contents($file); // Добавляем нового человека в файл $current .= json_encode($post)."\n"; // Пишем содержимое обратно в файл $res = file_put_contents($file, $current); return $res; } private function createFaceFeature(int $accountId, string $faceFeature, string $tokenDevice) { $faceFeature = new FaceFeature(); $faceFeature->face_feature = $faceFeature; $faceFeature->token_device = $tokenDevice; $faceFeature->id_account = $accountId; $faceFeature->save(); } }