Skip to content

Commit

Permalink
feat: add device kind
Browse files Browse the repository at this point in the history
  • Loading branch information
dufkan committed Mar 23, 2024
1 parent 8c04fa6 commit 4e2443a
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 4 deletions.
1 change: 1 addition & 0 deletions lib/ui/init_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@ class _RegistrationFormState extends State<RegistrationForm> {
DeviceRepository(dispatcher, di.keyStore, di.database.deviceDao);
device = await deviceRepository.register(
_nameController.text,
DeviceKind.user,
);
} catch (e) {
setState(() {
Expand Down
5 changes: 3 additions & 2 deletions meesign_core/bin/policy.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import 'dart:io';

import 'package:args/args.dart';
import 'package:meesign_core/meesign_core.dart';
import 'package:meesign_core/meesign_model.dart';

extension Approval<T> on TaskRepository<T> {
StreamSubscription<Task<T>> approveAll(Uuid did,
Expand Down Expand Up @@ -65,7 +66,7 @@ void main(List<String> args) async {
return;
}

final appDir = Directory('src/app/');
final appDir = Directory('bin/app/');

final database = Database(appDir);
final userDao = database.userDao;
Expand All @@ -89,7 +90,7 @@ void main(List<String> args) async {
var user = await userRepository.getUser();
Device device;
if (user == null) {
device = await deviceRepository.register(options['name']);
device = await deviceRepository.register(options['name'], DeviceKind.bot);
userRepository.setUser(User(device.id, options['host']));
print('No credentials found, registering as ${device.name}');
} else {
Expand Down
1 change: 1 addition & 0 deletions meesign_core/lib/meesign_model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ export 'src/model/challenge.dart';
export 'src/model/decrypt.dart';
export 'src/model/protocol.dart' show Protocol;
export 'src/model/key_type.dart' show KeyType;
export 'src/model/device_kind.dart' show DeviceKind;
export 'src/model/user.dart';

export 'src/util/mime_type.dart';
Expand Down
6 changes: 4 additions & 2 deletions meesign_core/lib/src/data/device_repository.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import 'package:meesign_network/grpc.dart' as rpc;
import '../database/daos.dart';
import '../database/database.dart' as db;
import '../model/device.dart';
import '../model/device_kind.dart';
import '../util/uuid.dart';
import 'key_store.dart';
import 'network_dispatcher.dart';
Expand All @@ -15,13 +16,14 @@ class DeviceRepository {

DeviceRepository(this._dispatcher, this._keyStore, this._deviceDao);

Future<Device> register(String name) async {
Future<Device> register(String name, DeviceKind kind) async {
final key = AuthWrapper.keygen(name);

final resp = await _dispatcher.unauth.register(
rpc.RegistrationRequest()
..name = name
..csr = key.csr,
..kind = kind.toNetwork()
..csr = key.csr
);

final did = Uuid(resp.deviceId);
Expand Down
28 changes: 28 additions & 0 deletions meesign_core/lib/src/model/device_kind.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import 'package:meesign_network/grpc.dart' as rpc;

enum DeviceKind {
user,
bot
}

extension DeviceKindConversion on DeviceKind {
rpc.DeviceKind toNetwork() {
switch (this) {
case DeviceKind.user:
return rpc.DeviceKind.USER;
case DeviceKind.bot:
return rpc.DeviceKind.BOT;
}
}

static DeviceKind fromNetwork(rpc.DeviceKind deviceKind) {
switch (deviceKind) {
case rpc.DeviceKind.USER:
return DeviceKind.user;
case rpc.DeviceKind.BOT:
return DeviceKind.bot;
default:
throw ArgumentError('Unknown device kind');
}
}
}

0 comments on commit 4e2443a

Please sign in to comment.