После однодневного исследования круглого угла с тенью, я рад опубликовать свой собственный класс uiview здесь, надеюсь закончить этот вопрос:
#import <UIKit/UIKit.h>
@interface RoundCornerShadowView : UIView
@end
#import "RoundCornerShadowView.h"
@implementation RoundCornerShadowView
// *** must override this method, not the other method ***
// otherwise, the background corner doesn't disappear....
// @2015/05/29
-(void) layoutSubviews {
[super layoutSubviews];//is must to ensure rightly layout children view
//1. first, create Inner layer with content
CALayer *innerView = [CALayer layer];
innerView.frame = CGRectMake(0,0,self.bounds.size.width,self.bounds.size.height);
//instead of: innerView.frame = self.frame;
innerView.borderWidth = 1.0f;
innerView.cornerRadius = 6.0f;
innerView.masksToBounds = YES;
innerView.borderColor = [[UIColor lightGrayColor] CGColor];
innerView.backgroundColor = [[UIColor whiteColor] CGColor];
//put the layer to the BOTTOM of layers is also a MUST step...
//otherwise this layer will overlay the sub uiviews in current uiview...
[self.layer insertSublayer:innerView atIndex:0];
//2. then, create shadow with self layer
self.layer.masksToBounds = NO;
self.layer.shadowColor = [[UIColor darkGrayColor] CGColor];
self.layer.shadowOpacity = 0.4f;
//shadow length
self.layer.shadowRadius = 2.0f;
//no offset
self.layer.shadowOffset = CGSizeMake(0, 0);
//right down shadow
//[self.layer setShadowOffset: CGSizeMake(1.0f, 1.0f)];
//3. last but important, MUST clear current view background color, or the color will show in the corner!
self.backgroundColor = [UIColor clearColor];
}
@end
, поэтому нет необходимости добавлять subview в представлении или ниже в целевом представлении, просто добавьте один слой в текущее представление и сделайте 3 шага для его завершения!
внимательно ознакомьтесь с комментариями в коде, полезно понять компонент!
Поскольку ваша функция ничего не возвращает, Mongoose exec ((err, user)) выходит за рамки вашей функции, а также вы уже используете асинхронные функции, почему бы вам не использовать синтаксис await.
Здесь, быстрый переписать ваш код.
module.exports = async (request, email, password, h) => {
if (!email || !password) {
return {
isValid: false,
credentials: null
}
}
try
{
const user = await User.findOne({ email, role: 'admin' }).exec();
// user doesn't exist
if(!user){
return Boom.unauthorized('You must be admin user');
}
// we found the user, let's authenticate
request.adminUser = currentUser;
return {
isValid: true,
credentials: currentUser
}
} catch(e){
// handle other errors
return Boom.badRequest(e);
}
};