1. Куча / Говнокод #26757

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    ```rust
    impl actix_web::FromRequest for Token {
        type Error = ApiError;
        type Future = Pin<Box<dyn Future<Output = Result<Self, Self::Error>>>>;
        type Config = ();
    
        fn from_request(req: &actix_web::HttpRequest, _: &mut actix_web::dev::Payload) -> Self::Future {
            match req.extensions().get::<Option<Self>>().map(Clone::clone) {
                Some(Some(v)) => Box::pin(async { Ok(v) }),
                None | Some(None) => {
                    let header = req.headers().get("Authorization").map(Clone::clone);
    
                    Box::pin(
                        web::Data::<Pool>::extract(req)
                            .map_err(ApiError::from)
                            .and_then(move |pool| {
                                async move {
                                    let header = header.ok_or(ApiError::authorization_required())?;
    
                                    let auth = header.to_str()?;
    
                                    let uuid = Uuid::parse_str(auth)
                                        .map_err(|_| ApiError::authorization_bad_token())?;
    
                                    let (_, token) = Self::find(&uuid, pool.get_conn().await?).await?;
    
                                    let token = token.ok_or(ApiError::authorization_bad_token())?;
    
                                    Ok(token)
                                }
                            })
                            .boxed_local()
                    )
                }
            }
        }
    }

    Было принято решение создать Authorization middleware, который при каждом запросе авторизировал пользователя, если есть нужный хидер. В связи с тем, что некоторые роуты достают модель через ручной экстрактор, пришлось дописать эту хуйню (Второе условие никогда не будет выполнена вообще судя по всему).

    Запостил: 1rei, 18 Июня 2020

    Комментарии (9) RSS

    • показать все, что скрытоvanished
      Ответить
      • http://www.train-photo.ru/data/media/287/001_____.jpg
        Ответить
        • показать все, что скрытоvanished
          Ответить
        • MOHOPEJIbCOBbIu_nemyx
          Ответить
          • Общие рельсы для столичного монорельса, трамвая и метро
            18:26 17.07.2012
            394
            Московская монорельсовая дорога
            © РИА Новости / Владимир Песня
            Перейти в фотобанк
            Сергей Петухов
            Сергей Петухов
            обозреватель, руководитель группы оперативного комментария

            группа оперативного комментария занимается скоростной расстановкой комментариев к операторам в шаблоне?
            Ответить
            • >> столичная монорельсовая дорога, которую еще в апреле было решено закрыть, продолжит работать до 2015 года

              Привет из 2020-го года. Она продолжает работать, но в «экскурсионном режиме», т. е. рейсы редкие. На линии два поезда, запасных нет, потому что детали для ремонта перестали закупать несколько лет назад. Для выживших поездов пока ещё можно снять годные детали с разукомплектованных.

              Линию закроют, когда последний поезд заклинит прямо на линии, а починить его будет нечем.

              Строительство скоростного трамвая откладывают. Лужков обещал построить скоростной трамвай, да так и умер, даже не начав. И похоже, что Бордюрыч собирается повторить его судьбу.

              Лучшее решение — построить эстакады через Октябрьскую железную дорогу и через Савёловское направление и пустить по ним трамвай и автомобили вместо монорельса. Однако, у станции метро «Тимирязевская» на месте будущей эстакады внезапно вырос «илитный» жилой комплекс («Дыхание») и у Останкинского пивзавода тоже вырос «илитный» жилой комплекс («Фонвизинский»). Позалепили всё «илитными» жилыми комплексами, теперь дорожные развязки строить негде.
              Ответить
    • Именно поэтому я за "PHP".
      Ответить

    Добавить комментарий