123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285 |
- <?php
- namespace app\controllers;
- use app\models\entity\Companies;
- use Yii;
- use app\models\entity\Accounts;
- use app\models\entity\FaceFeature;
- use yii\web\UnauthorizedHttpException;
- class AuthController extends MainController
- {
- public function beforeAction($action)
- {
- parent::beforeAction($action);
- $key = Yii::$app->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();
- }
- }
|